当我在cmd中运行jar文件时,我收到此错误:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/media/j3d/Canvas3D
当我使用java -cp . Main
和java -jar BallJump.jar
时都会发生这种情况我很确定我将类路径设置为正确,所以我不知道为什么会收到此错误消息。
这是我的Manifest.txt:
Main-Class: Main
Class-Path: .;"C:\Program Files\Java\Java3D\1.5.2\lib\ext\j3dcore.jar";"C :\Program Files\Java\Java3D\1.5.2\lib\ext\j3dutils.jar";"C:\Program Files\Java\Java3D\1.5.2\lib\ext\vecmath.jar"
我试图替换所有“;”使用“”并将“添加”到答案中建议的类路径,但不使用它们
答案 0 :(得分:1)
这是因为JVM找不到类javax.media.j3d.Canvas3D
,但您的类被编译为引用它。
从快速搜索来看,这个类似乎是j3dcore.jar
的一部分,在运行时(以及编译时)在类路径中需要它。这是Java 3D API的一部分:
http://www.oracle.com/technetwork/java/javase/tech/index-jsp-138252.html
因此,我会得出结论,您的清单类路径以某种方式被错误地指定。您应该查看清单doco以检查您是否做错了什么:
http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html
更新2013-04-18
我的清单类路径如何不正确?
阅读清单教程我看到classpath元素应该 space 分开;你有分号。
此外,线路长度限制为72个字符;你的classpath行超过了这个。
C
中的驱动器号"C :\Program Files..."
后面还有一个空格。
请注意,它必须是UTF-8编码。
您可以尝试:
Main-Class: Main
Class-Path:
.
"C:\Program Files\Java\Java3D\1.5.2\lib\ext\j3dcore.jar"
"C:\Program Files\Java\Java3D\1.5.2\lib\ext\j3dutils.jar"
"C:\Program Files\Java\Java3D\1.5.2\lib\ext\vecmath.jar"
(注意类路径元素的前导空格。)
答案 1 :(得分:0)
尝试在类路径中使用"
Class Path: .;"C:\Program Files\Java\Java3D\1.5.2\lib\ext\j3dcore.jar";"C
:\Program Files\Java\Java3D\1.5.2\lib\ext\j3dutils.jar";"C:\Program Fil
es\Java\Java3D\1.5.2\lib\ext\vecmath.jar"
因为空间有问题
答案 2 :(得分:0)
尝试替换“;”带有“”空格的分号,用于在manifest.mf