2012-11-13 102 views
2

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

Nov 13, 2012 2:43:53 PM org.jdesktop.application.Task failed 
SEVERE: [email protected] 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,并在挫折中,苹果的Java开发工具。该程序依赖于大量的外部库,但这些都是随jar提供的,我相信程序在运行时实际上会在分发目录中查找它们(我相信这些错误不是由于那些包而引起的) 。据我可以告诉一切,我需要运行应用程序已安装或在哪里可以找到它的地方

我不知道是否还有什么我需要做的设置环境,我还没有完成,所以如果任何人可以建议的东西,我都耳朵!我将提供任何所需的额外信息,但我不知道会有什么帮助 - 我不是任何方式的Java大师。

回答

7

我相信你使用的是旧的Oracle站点的Java3D jars结合最新的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的今天,通过使用社会保持与最新JogAmp JOGL V2组合Java3D的。

有关如何设置最新社区的教程将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/

+0

谢谢,我按照该页面上的说明,下载了jar并将它们放在一个文件夹中。然后我在NetBeans中将非“natives”添加到我的类路径中,现在出现以下错误: 'java.lang.NoClassDefFoundError:javax/media/opengl/GLCanvas' – Josh

+0

您已经混合了一些仍在使用JOGL 1的代码代码使用JOGL 2.0。依赖于AWT的GLCanvas已经被移植到最新版本的JOGL 2.0中的javax.media.opengl.awt包,最新版本的Java 3D(1.6.0 pre)使用JOGL 2.0。您的配置中仍然有一些JAR指向依赖于JOGL 1的类。我的教程正常工作,我使用Netbeans 7.2.1,Eclipse 4.3 Kepler M2进行了测试,并且没有使用IDE。 – gouessej

+0

您应该检查您的计算机上是否已经安装了过时版本的Java3D作为扩展,这可能会导致与最新版本的冲突。 – gouessej