3

我正在尝试运行 Java 应用程序并收到以下错误消息。应用程序本身加载正确,只是它的某些部分似乎失败了。

Nov 13, 2012 2:43:53 PM org.jdesktop.application.Task failed
SEVERE: My.Application$9@7c4f8358 failed: java.lang.NoClassDefFoundError: javax/media/opengl/GLCapabilitiesChooser
java.lang.NoClassDefFoundError: javax/media/opengl/GLCapabilitiesChooser
at jpl.mipl.jade.jadis.agile2d.swing.JOGLPluggableRenderer.notifyBeforeSetRootPane(JOGLPluggableRenderer.java:105)
at jpl.mipl.jade.jadis.StereoJFrame.setRootPane(StereoJFrame.java:264)
at javax.swing.JFrame.frameInit(JFrame.java:236)
at javax.swing.JFrame.<init>(JFrame.java:159)
at jpl.mipl.jade.jadis.StereoJFrame.<init>(StereoJFrame.java:172)
at StereoWS.DSStereoFrame.<init>(DSStereoFrame.java:70)
at StereoWS.StereoWSView$9.doInBackground(StereoWSView.java:1067)
at org.jdesktop.swingworker.SwingWorker$1.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at org.jdesktop.swingworker.SwingWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:680)
Caused by: java.lang.ClassNotFoundException: javax.media.opengl.GLCapabilitiesChooser
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 14 more

我正在运行完全更新的 OS X 10.8,我已经安装了 JDK 7,并且很沮丧地安装了 Apple 的 Java 开发工具。该程序依赖于许多外部库,但这些库是随 jar 提供的,我相信该程序在运行时确实会在分发目录中查找它们(尽管错误不是由于这些包引起的,我相信) . 据我所知,我需要运行该应用程序的所有内容要么已经安装,要么已经安装在 jar 可以找到它的地方

我不知道我还需要做些什么来设置我还没有做过的环境,所以如果有人可以提出一些建议,我会全力以赴!我将提供所需的任何额外信息,但我不知道有什么帮助——无论如何我都不是 Java 专家。

4

1 回答 1

8

我相信您正在使用旧 Oracle 站点中的 Java3D jar 和最新的 JogAmp JOGLv2,这将不起作用,原因有两个 A) jogl.jar 现在重命名为 jogl-all.jar B) 内部命名空间更改,所有 com. sun.* 类现在可以在 com.jogamp.* 下找到,这会混淆需要 com.sun.* 命名空间的旧 Java3D 代码。

JOGL 和 Java3D 现在都由 JogAmp 社区的成员维护: 移动背景:http ://labb.zafena.se/?p=656 目前唯一支持使用 Java3D 的方式是结合使用社区维护的 Java3D使用最新的 JogAmp JOGL v2。

关于如何设置最新社区维护的 Java3D 与 JOGLv2 结合的教程。Julien Gouesse:Java 3D est de retour [Java 3D 回归] http://gouessej.wordpress.com/2012/08/01/java-3d-est-de-retour-java-3d-is-back/

于 2012-11-13T21:59:10.730 回答