我正在尝试运行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专家。

最佳答案

我相信您将旧Oracle站点中的Java3D jar与最新的JogAmp JOGLv2结合使用,这将无法正常工作,原因有两个:A)jogl.jar现在重命名为jogl-all.jar B)内部名称空间更改,全部为com。现在可以在com.jogamp。*下找到sun。*类,这会使使用com.sun。*名称空间的旧Java3D代码感到困惑。

JOGL和Java3D现在都由JogAmp社区的成员维护:
行动的背景:http://labb.zafena.se/?p=656
今天,唯一受支持的Java3D使用方法是将社区维护的Java3D与最新的JogAmp JOGL v2结合使用。

有关如何结合JOGLv2来设置最新社区维护的Java3D的教程。
朱利安·古埃斯(Julien Gouesse):Java 3D重新介绍[Java 3D又回来了]
http://gouessej.wordpress.com/2012/08/01/java-3d-est-de-retour-java-3d-is-back/

10-07 12:54