因為工作需要,這幾天在ubuntu下配置jogl,我們知道如果在java中使用一些jar包什麼的,都是将這放到CLASSPATH中,但是jogl是需要調Native庫的,除了設定CLASSPATH,還需要設定Native庫。
不同的系統jogl的包的名稱是不一樣的,下表列出了各個系統上所需要的包,這些可以在
64-bit Windows
64-bit Linux
32/64-bit Mac
gluegen-rt.jar
jogl.all.jar
gluegen-java-src.zip
jogl-java-src.zip
gluegen-rt-natives-windows-amd64.jar
gluegen-rt-natives-linux-amd64.jar
gluegen-rt-natives-macosx-universal.jar
jogl-all-natives-windows-amd64.jar
jogl-all-natives-linux-amd64.jar
jogl-all-natives-macosx-universal.jar
安裝Native 庫
apt-get install libjogl2-jni
安裝之後會有下列檔案
/usr/lib/jni/libjogl_desktop.so
/usr/lib/jni/libjogl_mobile.so
/usr/lib/jni/libnativewindow_awt.so
/usr/lib/jni/libnativewindow_x11.so
/usr/lib/jni/libnewt.so
/usr/share/doc/libjogl2-jni/changelog.Debian.gz
/usr/share/doc/libjogl2-jni/copyright
配置
将jar包配置到CLASSPATH中
CLASSPATH=.:$JAVA_HOME/lib.tools.jar:/usr/local/lib/jogl/jogl.all.jar:/usr/local/lib/jogl/gluegen-rt.jar:/usr/local/lib/jogl/jogl-all-natives-linux-amd64.jar
将native庫配置到放到eclipse的編譯參數中。
-Djava.library.path="/usr/local/lib/jogl"
測試代碼
import javax.media.opengl.*;
public class HelloWorld {
public static void main(String[] args) {
System.out.println(System.getProperty("java.library.path"));
System.loadLibrary("jogl");
GLProfile profile = GLProfile.get(GLProfile.GL2ES2);
GLCapabilities capabilities = new GLCapabilities(profile);
System.out.println("OK,You do it!");
}
}
如果遇到錯誤:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jogl in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1738)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1028)
at HelloWorld.main(HelloWorld.java:9)
大多數是Native庫沒配置好。