0

当我在 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"

我试图替换所有的“;” 按照答案中的建议,使用“”并将“添加到类路径中,但没有一个有效

4

3 回答 3

1

这是因为javax.media.j3d.Canvas3DJVM 找不到该类,但您的类已编译为引用它。

从快速搜索来看,这个类似乎是 的一部分,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 更新

我的清单类路径如何不正确?

阅读清单教程,我看到类路径元素应该用空格分隔;你有分号。

此外,行长限制为 72 个字符;你的类路径行远远超过了这个。

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"

(注意类路径元素上的前导空格。)

于 2013-04-18T08:23:54.903 回答
0

尝试替换“;” 带有“”空间的分号用于分隔你的罐子manifest.mf

于 2013-04-18T08:22:23.247 回答
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"

因为空间有问题

于 2013-04-18T08:15:37.497 回答