JOGLで「Exception in thread "main" java.lang.UnsatisfiedLinkError」が生じる
JavaのライブラリのJOGLを使用したいのですが、実行できず原因もわからず困っています。
背景
こちらのサイトを閲覧しながら、勉強しています。
JOGLによるOpenGL入門
こちらの、3.3 空のウィンドウを開く
という章を行っています。
環境
クラスパスを通しているjarファイルは以下の2点です。
gluegen-rt.jar
jogl-all.jar
これらを、以下のMain
クラスに
javac -cp .:./gluegen-rt.jar:./jogl-all.jar Main.java
として、コンパイルしています。
コンパイルは通るのですが、以下のように実行するとエラーが起こります。
java -cp .:./gluegen-rt.jar:./jogl-all.jar Main
エラー内容
Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: /Users/***/workspace/JOGL/myjogl/natives/macosx-universal//gluegen-rt
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1827)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1086)
at com.jogamp.common.jvm.JNILibLoaderBase.loadLibraryInternal(JNILibLoaderBase.java:624)
at com.jogamp.common.jvm.JNILibLoaderBase.access$000(JNILibLoaderBase.java:63)
at com.jogamp.common.jvm.JNILibLoaderBase$DefaultAction.loadLibrary(JNILibLoaderBase.java:106)
at com.jogamp.common.jvm.JNILibLoaderBase.loadLibrary(JNILibLoaderBase.java:487)
at com.jogamp.common.os.DynamicLibraryBundle$GlueJNILibLoader.loadLibrary(DynamicLibraryBundle.java:421)
at com.jogamp.common.os.Platform$1.run(Platform.java:317)
at java.security.AccessController.doPrivileged(Native Method)
at com.jogamp.common.os.Platform.<clinit>(Platform.java:287)
at com.jogamp.opengl.GLProfile.<clinit>(GLProfile.java:147)
at Main.<init>(Main.java:21)
at Main.main(Main.java:17)
コード
import com.jogamp.opengl.GL;
import com.jogamp.opengl.GLAutoDrawable;
import com.jogamp.opengl.GLCapabilities;
import com.jogamp.opengl.GLEventListener;
import com.jogamp.opengl.GLProfile;
import com.jogamp.newt.event.WindowAdapter;
import com.jogamp.newt.event.WindowEvent;
import com.jogamp.newt.opengl.GLWindow;
import com.jogamp.opengl.util.Animator;
public class Main implements GLEventListener{
private Animator animator;
public static void main(String[] args){
new Main();
}
public Main(){
GLCapabilities caps = new GLCapabilities(GLProfile.get(GLProfile.GL2));//(2)
GLWindow glWindow = GLWindow.create(caps); //(3)
glWindow.setTitle("First demo (Newt)"); //(4)
glWindow.setSize(300, 300); //(5)
glWindow.addWindowListener(new WindowAdapter() { //(6)
@Override
public void windowDestroyed(WindowEvent evt) {
System.exit(0);
}
});
glWindow.addGLEventListener(this); //(7)
this.animator = new Animator(); //(8)
this.animator.add(glWindow);
this.animator.start();
glWindow.setVisible(true); //(10)
}
@Override
public void init(GLAutoDrawable drawable) {}
@Override
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {}
@Override
public void display(GLAutoDrawable drawable) {}
@Override
public void dispose(GLAutoDrawable drawable) {
if(this.animator != null) this.animator.stop();
}
}