jar文件无效java.lang.NoClassDefFoundError

时间:2013-04-18 08:12:36

标签: java classpath environment-variables manifest java-3d

当我在cmd中运行jar文件时,我收到此错误:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/media/j3d/Canvas3D

当我使用java -cp . Mainjava -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"

我试图替换所有“;”使用“”并将“添加”到答案中建议的类路径,但不使用它们

3 个答案:

答案 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

中分隔您的罐子