美好的一天!
我创建了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
答案 0 :(得分:4)
它不会按照您当前尝试的方式工作,因为您需要将jar文件放在jar旁边并通过'-Djava.library.path'参数指向它们。
如果您只想要一个jar并希望避免命令行和本机文件的麻烦,请使用JarSplice工具。 JarSplice易于使用,并会自动为您处理本机文件。
1)只需将项目(类和资源)导出到jar(更容易通过IDE执行)。
2)然后运行JarSplice,将所需的所有罐子添加到jar选项卡(你的app jar,lwjgl.jar和你正在使用的任何其他外部jar)。
3)然后在natives选项卡上添加所有本机文件(windows * .dll,linux * .so,mac * .dylib&amp; * .jnilib)。
4)在课程选项卡上添加您的主课程。然后创建你的jar。
然后你可以通过双击它来运行这个jar(或者如果你希望通过命令行使用'java -jar yourapp.jar')。
答案 1 :(得分:1)
来自LWJGL wiki:
LWJGL由两部分组成,java部分和本机代码部分。您必须正确设置这两个部分才能使lwjgl正常工作。要设置java部分,必须将 lwjgl.jar 添加到类路径(作为外部库jar)。至于原生部分(Windows上的* .dll文件,linux上的* .so,mac上的* .jnilib等),你必须告诉java本机所在的文件夹,以便LWJGL能够找到它们(使用< strong> -Djava.library.path = path / to / dir vm参数来执行此操作。)
您似乎错过了第二部分 - 在java.library.path
上拥有原生图书馆。