导出一个可运行的jar,打开它会返回UnsatisfiedLinkError

时间:2016-07-21 02:41:45

标签: java eclipse dll

我目前在Eclipse中编写了一个简单的GUI,它按预期运行。我希望将其导出,以便我可以与我的朋友分享(他不需要安装eclipse和java库)。我尝试了Eclipse提供的所有3个库处理方法,但没有一个工作。我在线阅读了一些关于清单文件的内容,但不太清楚如何处理它。它有帮助吗? This is what happens when I run it in the cmd

这是我放置.dll文件附带的文件夹的地方。 enter image description here enter image description here 这是结果。难道我做错了什么? enter image description here

1 个答案:

答案 0 :(得分:1)

如第一个屏幕截图中的错误消息所示,您在这里缺少的是本机库 - 编写和编译为特定于操作系统的本机代码的软件库。您需要做的是提供特定于运行软件的操作系统的库,例如。用于32位或64位Windows的dll。清单不提供包含这些库的功能。

当程序在Windows上运行时,Java将在以下位置查找本机库:

  • 当前目录
  • PATH环境变量中的目录
  • java.library.path中的目录(如果已指定)

将所有文件放在一个目录中可能最简单。如果这样做,您应该能够以与现在相同的方式运行程序。

如果您希望将本机库文件放在与运行程序而不是PATH的目录分开的目录中,则java.library.path选项仅 。只有在这种情况下,您才需要添加java.library.path,例如。在-Djava.library.path=c:\path\to\your\lib之后添加java。另请注意,您可以使用相对路径,即。与执行命令时所在目录相关的路径。

我还从后面的错误消息中看到您有另一个依赖项,但是在java库LeapJava.jar上。运行带有-jar的jar只会在你有一个jar的情况下工作,但是因为你有多个(你自己的程序加上依赖),你需要使用{{1} }(或简称为-classpath)参数并添加您的主类。 classpath参数是以分号分隔的类路径位置列表,而主类是包含-cp方法的类,例如。 public static void main。因此,假设您的UI.jar仍在your.package.name.YourMainClass中,您应该能够导航到该目录并执行:

C:\Users\Ian\Desktop\Leap Data UI