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. 在将 Java3D jar 复制到 /jre/lib/ext/ 之前,我什至无法编译它。

  2. 我有最新的 Java、Java3D,我正在使用 Notepad++,我尝试重新安装 Java3D。

  3. 我已经正确设置了类路径/路径。

  4. 代码中没有错误。

  5. 我可以运行我创建的普通 Java 应用程序。

  6. 我尝试在运行应用程序时使用类路径(java -classpath blahblah ApplicationName)。

  7. 我检查了罐子内部,并且类(包括 Canvas3D)肯定在里面。

4

1 回答 1

0

不是你说的每件事都是真的。

如果类在 jar 中,并且如果您正确设置了类路径,那么您将不会收到此消息。

我怀疑您的构建路径与类路径(主要与运行时相关联,其中构建路径与编译时间相关联)混淆了。在不了解运行时环境的更多细节的情况下,很难更具体。

它总是让我感到困惑,一个他们无法解决问题的人如何如此肯定地断言所有这些事情都“正确”设置:你怎么知道?这个问题难道不是一些相反的证据,至少足以引起一个小小的疑问吗?

于 2013-03-14T18:03:33.023 回答