【发布时间】:2014-10-07 04:43:24
【问题描述】:
我是 Java 和 Eclipse 的新手。我有一个带有对话框的基于窗口的应用程序,它在 IDE 中运行良好。但是,当我尝试导出 JAR 以使其在 IDE 之外可执行(因此可重新分发)时,我使用以下命令执行它:
java -jar MyLibrary-app.jar
我得到了例外:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:
no swt-win32-4427 in java.library.path
no swt-win32 in java.library.path
Can't load library: C:\Users\jay.imerman\.swt\lib\win32\x86\swt-win32-4427.dll
Can't load library: C:\Users\jay.imerman\.swt\lib\win32\x86\swt-win32.dll
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:327)
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:236)
at org.eclipse.swt.internal.C.<clinit>(C.java:21)
at org.eclipse.swt.widgets.Display.<clinit>(Display.java:138)
at org.jimerman.MyLibrary.MainWindow.open(MainWindow.java:51)
at org.jimerman.MyLibrary.MainWindow.main(MainWindow.java:40)
我不知道导出 JAR 和 Runnable JAR 之间有什么区别,我都试过了。在前者上,我还尝试包含来自 swt 项目的 src,以及我引用的另一个 Java 类库项目。我习惯于 Visual Studio 和 Setup 项目,它检测依赖关系并收集部署的引用。我错过了什么?如果我要使用 Maven 之类的东西,我该如何去学习所有的术语和概念,甚至理解它的含义以及构建可再分发文件需要什么?
【问题讨论】:
-
好的,我想我取得了一些进展。在查看错误的开头时,它说它无法加载 DLL - 我从 Eclipse.org 下载了 SWT (4.4),打开了 zip。显然只是将 swt.jar 文件放在与我的 jar 相同的路径中,或者将其放在 .swt 路径中是不够的。我打开 swt.jar 并找到了 DLL,并将它们放在它正在寻找它们的路径中(开头的错误),现在我的应用程序运行了。现在如何自动化收集和打包,以便可以将单个文件分发到另一台计算机以运行我的应用程序?令人困惑。
-
另一件事有效 - 当我在 MyLibrary 项目上选择导出时,我展开 swt 项目并从主文件夹中选择要包含在我的 JAR 文件中的 DLL。这也正确执行。另外,它是一个单一的 JAR zip,所以它是一个干净的构建版本。
标签: java eclipse maven jar swt