2011-07-30 47 views
0

我正在嘗試使用Jzy3D庫並在openGl下繪製一些圖表。 但是,當我嘗試編譯代碼,我得到以下錯誤:JOGL圖表編譯錯誤

Exception in thread "main" java.lang.NoClassDefFoundError: javax/media/opengl/GLCanvas 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClassCond(Unknown Source) 
    at java.lang.ClassLoader.defineClass(Unknown Source) 
    at java.security.SecureClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.access$000(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) 
    at org.jzy3d.chart.Chart.initializeCanvas(Chart.java:65) 
    at org.jzy3d.chart.Chart.<init>(Chart.java:56) 
    at org.jzy3d.chart.Chart.<init>(Chart.java:39) 
    at mychart.MyChart.<init>(MyChart.java:44) 
    at mychart.MyChart.main(MyChart.java:58) 
Caused by: java.lang.ClassNotFoundException: javax.media.opengl.GLCanvas 
    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) 
    ... 17 more 

我還補充一點,我寫的代碼,如果有一些問題:使用Eclipse靛藍

package mychart; 

import java.awt.Component; 
import java.awt.Dimension; 
import java.awt.Frame; 

import org.jzy3d.chart.Chart; 
import org.jzy3d.colors.Color; 
import org.jzy3d.colors.ColorMapper; 
import org.jzy3d.colors.colormaps.ColorMapRainbow; 
import org.jzy3d.maths.Range; 
import org.jzy3d.plot3d.builder.Builder; 
import org.jzy3d.plot3d.builder.Mapper; 
import org.jzy3d.plot3d.builder.concrete.OrthonormalGrid; 
import org.jzy3d.plot3d.primitives.Shape; 
import org.jzy3d.plot3d.rendering.legends.colorbars.ColorbarLegend; 

public class MyChart { 

    protected Chart chart; 

    public MyChart(){ 

     Mapper mapper = new Mapper(){ 

      @Override 
      public double f(double x, double y) { 
       // TODO Auto-generated method stub 
       return 20*x*(1-Math.sin(y)); 
      } 
     }; 

     Range range = new Range(-100, 100); 
     int steps = 30; 

     final Shape surface = (Shape) Builder.buildOrthonormal 
       (new OrthonormalGrid(range, steps, range, steps), mapper); 
     surface.setColorMapper(new ColorMapper(new ColorMapRainbow(), surface.getBounds().getZmin(), 
       surface.getBounds().getZmax(), new Color(1, 1, 1, .5f))); 
     surface.setFaceDisplayed(true); 
     surface.setWireframeDisplayed(true); 
     surface.setWireframeColor(Color.BLACK); 

     chart = new Chart(); 
     chart.getScene().getGraph().add(surface); 

     ColorbarLegend cl = new ColorbarLegend(surface, chart.getView().getAxe().getLayout()); 
     cl.setMinimumSize(new Dimension(100, 300)); 

     surface.setLegend(cl); 
    } 

    public Chart getChart(){ 
     return chart; 
    } 

    public static void main(String[] args){ 
     MyChart myChart = new MyChart(); 

     Frame frame = new Frame(); 
     frame.setSize(1000, 600); 
     frame.add((Component)myChart.getChart().getCanvas()); 
     frame.setVisible(true); 
    } 
} 

I'm IDE,Jogl 2.0庫(當我將它們導入Eclipse時,我填充了本地庫路徑),Jzy3D 0.8.4版本。我正在Windows 7旗艦版下工作。

+0

那麼問題就解決了:)當我導入JGL3D的JOGL庫時它就起作用了。當您下載eclipse的特殊演示項目時可以找到這些庫。這裏是鏈接http://code.google.com/p/jzy3d/downloads/detail?name=org.jzy3d-0.8.2-demo-eclipse-project.zip&can=2&q= – Reshi

回答

0

Jzy3D可能需要JOGL 1.x

+0

是的,謝謝:)我意識到正是這個問題:)我從jzy3d網站下載了eclipse的演示項目,並在裏面找到了JOGL庫,我需要:) Eclipse演示項目的鏈接位於: http://code.google.com /p/jzy3d/downloads/detail?name=org.jzy3d-0.8.2-demo-eclipse-project.zip&can=2&q= – Reshi

+1

Jzy3d 0.8使用JOGL 1.x,而Jzy3d 0.9使用JOGL 2.我目前正在更新0.9的代碼與最新的JOGL 2(rc2 b23)一起使用 – Martin