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

4 回答 4

9

这是因为 lwjgl 库由两个组件组成:

  • 包含 Java 代码的.jar文件
  • 和本机二进制库(根据您的操作系统,可以是.so.dll.dylib )

您遇到的第一个错误是因为您正在设置库路径,该路径应该包含本库,但它确实包含 .jar。所以你得到了一个java.lang.NoClassDefFoundError,因为你应该将库路径设置为包含本机库的文件夹,或者将类路径设置为包含真正的lwjgl.jar文件。

使用 Eclipse 遇到的第二个错误是后续步骤:您的类路径包含 jar 库,但无法找到附加到它的本机库,您可以通过以下方式修复它:

在此处输入图像描述

于 2012-04-08T14:34:19.800 回答
0

您应该明确指定要包含哪些 lib 文件(由 ; 分隔):

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

不要试图使用通配符 *,因为它弊大于利(根据以前的经验:))

于 2012-04-08T14:33:19.893 回答
0

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

于 2012-04-08T14:35:09.833 回答
0

在 Eclipse 中,如果您使用 maven。

将以下内容添加到项目“运行”:“VM 选项”。

-Djava.library.path=yourpath/youproject/java/target/natives
于 2012-08-31T17:36:22.257 回答