2012-11-13 164 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