2011-07-30 3 views
0

Jzy3D 라이브러리로 작업하고 openGl에서 일부 차트를 페인트하려고합니다.JOGL 차트 컴파일 오류

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); 
    } 
} 

미안 이클립스 인디고를 사용 : 나는 또한 약간의 문제가 발생했습니다 경우, 내가 쓴 코드를 추가

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 

: 나는 코드를 컴파일하려고하면 오류 다음 구해야 그러나 IDE, Jogl 2.0 라이브러리 (이클립스로 가져온 경우 Native Library Path를 채웠다), Jzy3D 0.8.4 버전. 저는 Windows 7 Ultimate에서 일하고 있습니다.

+0

그럼 문제가 해결되었습니다. Jzy3D의 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는 아마도 JOGL1.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를 사용합니다. 현재 최신 JOGL 2 (rc2 b23)와 작동하는 0.9의 코드 – Martin