2

我已经阅读了很多,但还没有找到解决方案。

我正在使用lwjgl,它需要 2 个 jars 和一个本地库来运行:lwjgl.jarlwjgl_util.jar本地库。我已经以我能想到的各种方式尝试了这个,无论如何,我现在正在尝试这样的命令:

java - Djava.library.path="libs/natives/" -cp libs/jars/lwjgl.jar:libs/jars/lwjgl_util.jar DisplayTest.class

但在我尝试的每一种方式中,我得到:

Exception in thread "main" java.lang.NoClassDefFoundError: DisplayTest/class
Caused by: java.lang.ClassNotFoundException: DisplayTest.class
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: DisplayTest.class. Program will exit

哦,值得一提的是,我正在使用 linux 终端。此外,我让它在 Eclipse 中运行得非常好,所以我无法真正理解这里发生了什么。

4

4 回答 4

4

首先,您只需要将类名传递给 java:

java -Djava.library.path="libs/natives/" 
     -cp libs/jars/lwjgl.jar:libs/jars/lwjgl_util.jar DisplayTest

(为了可读性而换行)

我会尝试以下方法:

1) 使用 CLASSPATH 环境变量,如下所示:

  CLASSPATH=.:/path/to/lwjgl/lwjgl.jar:/path/to/lwjgl/lwjgl_util.jar 
  export CLASSPATH

注意类路径开头的点 (.);

2)运行你的java应用程序:

  java -Djava.library.path="libs/natives" DisplayTest

如果可行,请将上面的命令添加到 shell 脚本中。祝你好运!

于 2012-09-04T16:54:43.160 回答
1

尝试取消“.class”,例如

java -Djava.library.path="libs/natives/" -cp libs/jars/lwjgl.jar:libs/jars/lwjgl_util.jar DisplayTest.class

会成为:

java -Djava.library.path="libs/natives/" -cp libs/jars/lwjgl.jar:libs/jars/lwjgl_util.jar DisplayTest

通过添加“.class”,您告诉命令您在名为“DisplayTest”的目录中有一个名为“class”的类,这不是您想要实现的。这显示在这一行中:

Exception in thread "main" java.lang.NoClassDefFoundError: DisplayTest/class
于 2012-09-04T16:55:37.970 回答
0

I also got a similar error.

Just include your working directory , (where you have your own class), along with the libraries that you need in your classpath at runtime.

NoCLassDefFoundError occurs when the machine is unable to find your .class files during runtime (even though they have been compiled ,i.e it won't give an error while compiling but only during runtime)

STEP 1: to compile javac -classpath "path/to/lib1:path/to/lib2" yourfile.java STEP 2: to run java - classpath "path/to/lib1:path/to/lib2:path/to/your/currentdirectory/wherethedotclass/filearecreated/" yourfile

于 2014-11-21T18:54:48.723 回答
0

触发 java 命令时使用 -cp 或 -classpath。只需输入java命令即可查看使用情况

于 2012-09-04T16:50:36.093 回答