Java - 库路径错误

4
我正在尝试启动我的Java游戏,但是使用Java命令行时遇到了一些问题:
这是我键入的内容: C:\>java -Djava.library.path=%cd%\lib -jar game.jar 以下是我得到的结果:
Exception in thread "main" java.lang.NoClassDefFoundError: org/lwjgl/LWJGLException
    at com.game.Main.main(Main.java:7)
    Caused by: java.lang.ClassNotFoundException: org.lwjgl.LWJGLException
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 1 more

我可以使用Eclipse启动我的游戏(选择运行为Java应用程序),但是在菜单之后,我遇到了以下错误:
Exception in thread "Thread-5" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at org.lwjgl.Sys$1.run(Sys.java:72)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.lwjgl.Sys.doLoadLibrary(Sys.java:65)
    at org.lwjgl.Sys.loadLibrary(Sys.java:81)
    at org.lwjgl.Sys.<clinit>(Sys.java:98)
    at org.lwjgl.opengl.Display.<clinit>(Display.java:129)
    at com.game.displaygui.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
lwjgl.jar已经放置在文件夹\lib中。
你能解释一下我为什么会得到这个东西吗?
谢谢。
4个回答

9
这是因为lwjgl库由两个组件组成:
- 包含Java代码的.jar文件 - 原生二进制库(根据您的操作系统可能包含.so、.dll或.dylib)
您遇到的第一个错误是因为您正在设置库路径,该路径应包含本地库,但它包含了.jar。因此,您会收到java.lang.NoClassDefFoundError错误,因为您应该将库路径设置为包含本地库的文件夹,或者将类路径设置为包含实际的lwjgl.jar文件。
在Eclipse中出现的第二个错误是一个后续步骤:您的类路径包含jar库,但无法找到连接到它的本机库,您可以按照以下方式进行修复: enter image description here

0

你应该明确指定要包含哪些库文件(以分号分隔):

-cp %cd%\lib\lwjdl.jar;%cd%\lib\<another-lib>.jar

不要被通配符*所诱惑,因为它会带来更多的伤害(从以前的经验中得知:)


0

您可以使用java.library.path选项来指定要加载的本地库的位置。在该选项指向的位置中,您将放置LWJGL所需的所有dll.so文件。另一方面,您需要确保所有必需的JAR文件都在您的类路径上,通过-classpath选项。目前,您的JAR文件位于错误的目录中。


我不明白我在这里应该做什么? - Manitoba

0
在 Eclipse 中,如果你使用 Maven。
请在项目的“运行”中添加以下内容:“VM选项”。
-Djava.library.path=yourpath/youproject/java/target/natives

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接