2

コマンドラインからJOGLを使用してコンパイルする簡単なプログラムを取得しようとしています。これは実際には機能していません。公式ドキュメントが示唆するように、jogl.all.jar、gluegen-rt.jar、nativewindow.all.jar、および newt.all.jar を参照しようとしましたが、コンパイラはまだ JOGL クラスを見つけることができません。

これはコードです:

import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.media.opengl.GL;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCanvas;
import javax.media.opengl.GLEventListener;

public class Test implements GLEventListener {

    public static void main(String[] args) {
        Frame frame = new Frame("JOGL Test");
        GLCanvas canvas = new GLCanvas();
        canvas.addGLEventListener(new Test());
        frame.add(canvas);
        frame.setSize(300, 300);
        frame.setVisible(true);
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }

    public void init(GLAutoDrawable drawable) {
    }

    public void reshape(GLAutoDrawable drawable, int x, int y, int width,
            int height) {
    }

    public void display(GLAutoDrawable drawable) {
        GL gl = drawable.getGL();
        gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
        gl.glClear(GL.GL_COLOR_BUFFER_BIT);
        gl.glColor3f(1.0f, 1.0f, 1.0f);
        gl.glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
        gl.glBegin(GL.GL_POLYGON);
        gl.glVertex2f(-0.5f, -0.5f);
        gl.glVertex2f(-0.5f, 0.5f);
        gl.glVertex2f(0.5f, 0.5f);
        gl.glVertex2f(0.5f, -0.5f);
        gl.glEnd();
        gl.glFlush();
    }

    public void displayChanged(GLAutoDrawable drawable, boolean modeChanged,
            boolean deviceChanged) {
    }

}

これは私がそれをコンパイルするために使用しているものです:

javac -cp /jogl/lib/jogl.all.jar;/jogl/lib/gluegen-rt.jar;/jogl/lib/nativewindow.all.jar;/jogl/lib/newt.all.jar Test.java

Java コンパイラは、私のクラスパス仕様を完全に無視しているようです。

編集: GL、GLAutoDrawable、および GLEventListener については問題ないようですが、GLCanvas が見つからないだけです。jogl.all.jar の中を見ると、GLCanvas.class がないようです。

4

2 に答える 2

2

これらのそれぞれを試して、いずれかが機能するかどうかを確認してください。

javac -cp \jogl\lib\jogl.all.jar;\jogl\lib\gluegen-rt.jar;\jogl\lib\nativewindow.all.jar;\jogl\lib\newt.all.jar Test.java

javac -cp ./jogl/lib/jogl.all.jar;./jogl/lib/gluegen-rt.jar;./jogl/lib/nativewindow.all.jar;./jogl/lib/newt.all.jar Test.java

javac -cp .\jogl\lib\jogl.all.jar;.\jogl\lib\gluegen-rt.jar;.\jogl\lib\nativewindow.all.jar;.\jogl\lib\newt.all.jar Test.java
于 2010-01-06T08:44:21.780 に答える
0

OS 固有のセパレータ (Windows では "\" と ";"、Linux では "/" と ":") を使用することを忘れないでください。jogl.all.jar は jogl-all.jar に名前が変更されました。クラスパスに jogl-all.jar と gluegen-rt.jar を入れるだけです。gluegen-rt-natives-?-?.jar と jogl-all-natives-?-?.jar は同じディレクトリにある必要がありますが、クラスパスにはありません。

于 2012-10-31T12:33:53.140 に答える