2012-09-04 83 views
2

我周围有很多读,但一直没能找到解决的办法尚未外部库。运行Java依赖

我使用的是lwjgl,它需要2个罐子和一个本地库运行: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终端。 另外,我得到这个在日食中运行得非常好,所以我不能真正理解这里的情况。触发java命令使用-cp或-classpath时

+0

”Djava.library.path =“libs/natives /”'之前是否有空格?它应该是'-Djava.library.path =“libs/natives /”',构造'-D'用于定义系统属性 –

+0

是的,对不起,它应该是-D,我在编写时遇到了一些问题线程:) – user1295313

回答

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脚本的命令。祝你好运!

+0

我想补充一点,“DisplayTest/class”中的'/'是这里的线索。类名不能有'/'! –

+0

首先,非常感谢答复,但它确实对我有用。我仍然无法找到主类:DisplayTest的东西。即使试图复制你的代码马上,仍然没有工作:( – user1295313

+0

对不起,很显然,这固定了我提供的错误,但是.class的东西被修复后出现的那个非常像我没有注意到任何改变一段时间 – user1295313

0

。输入刚才java命令来查看使用

+0

我确实使用过-cp? :) – user1295313

1

尝试起飞“.class”的例如

的java -Djava.library.path = “库/当地人/” -cp库/罐/ lwjgl.jar:库/瓶/ lwjgl_util.jar DisplayTest.class

将变成:

的java -Djava.library.path = “库/当地人/” -cp库/罐/ lwjgl.jar:库/瓶/ lwjgl_util.jar DisplayTest

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

Exception in thread "main" java.lang.NoClassDefFoundError: DisplayTest/class 
+0

非常感谢您的回复!但是,这并没有为我工作,仍然没有找到类的东西:( – user1295313

+0

@ user1295313没关系:)现在输出是什么意思? –

+0

@ user1295313认为我可能已经解决了在你的类路径开始时尝试放入“;;”例如java -Djava.library.path =“libs/natives /”-cp。; libs/jars/lwjgl.jar:libs/jars/lwjgl_util.jar DisplayTest –

0

我也有类似的错误。

就包括你的工作目录,(你有你自己的类),与你在你的classpath在运行时需要的库一起。

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/wheretotclass/filearecreated /“yourfile