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.Canvas3D、JVM がクラスを見つけることができなかったが、クラスがそれを参照するようにコンパイルされたためです。

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

"クラスパスで使用してみてください

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 に答える
0

「;」を置き換えてみてください jar を区切るための " " スペースを含むセミコロンmanifest.mf

于 2013-04-18T08:22:23.247 に答える