4

再会!

我创建了 jar 文件(使用 Netbeans),但我无法启动它。该项目使用 lwjgl 库。在我的 IDE 中,它运行良好。

我使用下一个命令:

java -jar LWJGL_TimerExample.jar 

答案是:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1758)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1045)
at org.lwjgl.Sys$1.run(Sys.java:73)
at java.security.AccessController.doPrivileged(Native Method)
at org.lwjgl.Sys.doLoadLibrary(Sys.java:66)
at org.lwjgl.Sys.loadLibrary(Sys.java:82)
at org.lwjgl.Sys.<clinit>(Sys.java:99)
at org.lwjgl.opengl.Display.<clinit>(Display.java:130)
at Sourse.TimerExample.start(TimerExample.java:32)
at lwjgl_timerexample.Main.main(Main.java:21)

其他项目(没有这个库)工作正常。我该如何解决这个错误?

我的清单是:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.1
Created-By: 1.6.0_26-b03-384-10M3425 (Apple Inc.)
Main-Class: lwjgl_timerexample.Main
Class-Path: lib/jinput.jar lib/lwjgl.jar lib/lwjgl_util.jar
X-COMMENT: Main-Class will be added automatically by build
4

2 回答 2

4

它不会按照您当前尝试的方式工作,因为您需要将本机文件放在 jar 旁边并通过“-Djava.library.path”参数指向它们。

如果您只想要一个 jar 并且想要避免命令行和本地文件的麻烦,请使用JarSplice工具。JarSplice易于使用,并且会自动为您处理本机文件内容。

1)只需将您的项目(类和资源)导出到一个 jar 中(通过您的 IDE 更容易做到)。

2) 然后运行 ​​JarSplice,将您需要的所有 jars 添加到 jars 选项卡(您的应用程序 jar、lwjgl.jar 和您正在使用的任何其他外部 jar)。

3)然后在 natives 选项卡上添加所有 natives 文件(windows *.dll、linux *.so、mac *.dylib 和 *.jnilib)。

4)在类选项卡上添加您的主类。然后创建你的罐子。

然后你可以通过双击它来运行这个jar(或者如果你希望通过命令行使用'java -jar yourapp.jar')。

于 2011-07-19T15:48:56.057 回答
1

来自LWJGL 维基

LWJGL 由两部分组成,Java 部分和本机代码部分。您必须正确设置这两个部分才能使 lwjgl 正常工作。为了设置 java 部分,您必须将lwjgl.jar添加到类路径(作为外部库 jar)。至于本机部分(Windows 上的 *.dll 文件、Linux 上的 *.so、mac 上的 *.jnilib 等),您必须告诉 java 本地人位于哪个文件夹中,以便 LWJGL 能够找到它们(使用- Djava.library.path=path/to/dir vm 参数来执行此操作)。

您似乎错过了第二部分 - 在您的java.library.path.

于 2011-07-19T15:50:30.450 回答