1

正常にコンパイルされるJava3Dを使用するクラスがありますが、実行しようとすると、次のように表示されます。スレッド「main」の例外java.lang.NoClassDefFoundError:javax / media / j3d / Canvas3D

次のスタックトレースを使用します。

        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
        at java.lang.Class.getMethod0(Unknown Source)
        at java.lang.Class.getMethod(Unknown Source)
        at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: javax.media.j3d.Canvas3D
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)

私がすでに試したもの:

  1. Java3Djarを/jre/ lib / ext /にコピーするまで、コンパイルすることすらできませんでした。

  2. 最新のJava、Java3Dを使用しており、Notepad ++を使用しており、Java3Dを再インストールしてみました。

  3. クラスパス/パスを正しく設定しました。

  4. コードにエラーはありません。

  5. 作成した通常のJavaアプリケーションを実行できます。

  6. アプリケーションの実行時にクラスパスを使用してみました(java -classpath blahblah ApplicationName)。

  7. 私はjarファイルの内部を確認しましたが、クラス(Canvas3Dを含む)は間違いなくそこにあります。

4

1 に答える 1

0

あなたが言うすべてが真実であるとは限りません。

クラスがjarにあり、クラスパスを正しく設定している場合、このメッセージは表示されません。

ビルドパスがクラスパスと混同されていると思われます(これは主にランタイムに関連付けられており、ビルドパスはコンパイル時に関連付けられています)。ランタイム環境の詳細を知らなければ、より具体的にすることは困難です。

解決できない問題を抱えている人が、これらすべてが「正しく」設定されていることを明確に主張することは、常に私を困惑させます。どうやって知っていますか?問題はそれとは反対の証拠ではありませんか、少なくとも小さな疑問には十分ですか?

于 2013-03-14T18:03:33.023 に答える