我正在尝试开始我的 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
。
你能解释一下吗?
谢谢。
最佳答案
这是因为 lwjgl 库由两个组件构成:
- 包含Java代码的.jar文件
- 和 native 二进制库(可以是 .so 或 .dll 或 .dylib,具体取决于您的操作系统)
您遇到的第一个错误是因为您正在设置库路径,它应该包含native 库,但它确实包含.jar。所以你会得到一个 java.lang.NoClassDefFoundError
因为你应该将库路径设置为包含 native 库的文件夹,或者将类路径设置为包含真正的 lwjgl.jar 文件.
您使用 Eclipse 遇到的第二个错误是后续步骤:您的类路径包含 jar 库,但无法找到附加到它的 native 库,您可以通过以下方式修复它:
关于Java - 库路径错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10063530/