我已经阅读了很多,但还没有找到解决方案。
我正在使用lwjgl
,它需要2个jar和一个本地库来运行:lwjgl.jar
,lwjgl_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终端。 另外,我认为这在日食中运行得非常好,所以我真的不明白这里有什么。
答案 0 :(得分: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脚本中。祝你好运!
答案 1 :(得分:1)
尝试脱掉“.class”,例如
java -Djava.library.path =“libs / natives /” - cy libs / jars / lwjgl.jar:libs / jars / lwjgl_util.jar DisplayTest.class
会变成:
java -Djava.library.path =“libs / natives /” - cy libs / jars / lwjgl.jar:libs / jars / lwjgl_util.jar DisplayTest
通过添加“.class”,您告诉命令您在名为“DisplayTest”的目录中有一个名为“class”的类,这不是您想要实现的目标。这显示在这一行:
Exception in thread "main" java.lang.NoClassDefFoundError: DisplayTest/class
答案 2 :(得分:0)
触发java命令时使用-cp或-classpath。只需输入java
命令即可查看用法
答案 3 :(得分:0)
我也遇到了类似的错误。
只需包含您的工作目录(您拥有自己的类),以及运行时类路径中所需的库。
当机器在运行时无法找到NoCLassDefFoundError
文件时发生 .class
(即使它们已被编译,即它在编译时不会给出错误但仅在运行时期间)
第1步:编译 javac -classpath" path / to / lib1:path / to / lib2" yourfile.java 第2步:运行 java - classpath" path / to / lib1:path / to / lib2:path / to / your / currentdirectory / wherethedotclass / filearecreated /" yourfile