我无法加载 gluegen-rt.dll 64 位库
I can't load the gluegen-rt.dll 64bits library
这是我添加的库:
-gluegen-rt-natives-windows-amd64
-gluegen-rt
-jogl-all-natives-windows-amd64
-jogl-all
这是我得到的异常:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: C:\Users\KamyluKuna\Documents\NetBeansProjects\OpenGL\natives\windows-i586\gluegen-rt.dll
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1828)
at java.lang.Runtime.load0(Runtime.java:792)
at java.lang.System.load(System.java:1059)
at com.jogamp.common.jvm.JNILibLoaderBase.loadLibraryInternal(JNILibLoaderBase.java:624)
at com.jogamp.common.jvm.JNILibLoaderBase.access[=15=]0(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.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 opengl.Lesson1.AppRoot.initGLObjects(AppRoot.java:50)
at opengl.Lesson1.AppRoot.<init>(AppRoot.java:134)
at opengl.Lesson1.App.<init>(App.java:14)
at opengl.Lesson1.App.main(App.java:41)
Java Result: 1
您可能在 64 位操作系统上使用 32 位 JVM。然后,GlueGen 会尝试查找 32 位本机库,而您只提供 64 位本机库。提供 32 位本机库或使用 64 位 JVM 或使用 jogamp-fat.jar(它包含本机库和 JogAmp 的 Java 库)而不是使用单独的 JAR。
顺便说一下,您没有说明 "the libraries I have added" 的意思。将包含本机库的 JAR 放入与包含 Java 库的目录相同的目录中,并将包含 Java 库的 JAR 添加到类路径中,或者将 jogamp-fat.jar 放入类路径中(最简单且最不容易出错的解决方案)。
对我来说,我是 运行 IntelliJ 中的 Maven 项目,具有以下依赖项:
<dependency>
<groupId>org.jogamp.jogl</groupId>
<artifactId>jogl-all-main</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>org.jogamp.gluegen</groupId>
<artifactId>gluegen-rt</artifactId> <!-- This is incorrect -->
<version>2.3.2</version>
</dependency>
将第二个依赖项从 gluegen-rt 更改为 gluegen-rt-main 后,错误消失了。
这是我添加的库:
-gluegen-rt-natives-windows-amd64
-gluegen-rt
-jogl-all-natives-windows-amd64
-jogl-all
这是我得到的异常:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: C:\Users\KamyluKuna\Documents\NetBeansProjects\OpenGL\natives\windows-i586\gluegen-rt.dll
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1828)
at java.lang.Runtime.load0(Runtime.java:792)
at java.lang.System.load(System.java:1059)
at com.jogamp.common.jvm.JNILibLoaderBase.loadLibraryInternal(JNILibLoaderBase.java:624)
at com.jogamp.common.jvm.JNILibLoaderBase.access[=15=]0(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.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 opengl.Lesson1.AppRoot.initGLObjects(AppRoot.java:50)
at opengl.Lesson1.AppRoot.<init>(AppRoot.java:134)
at opengl.Lesson1.App.<init>(App.java:14)
at opengl.Lesson1.App.main(App.java:41)
Java Result: 1
您可能在 64 位操作系统上使用 32 位 JVM。然后,GlueGen 会尝试查找 32 位本机库,而您只提供 64 位本机库。提供 32 位本机库或使用 64 位 JVM 或使用 jogamp-fat.jar(它包含本机库和 JogAmp 的 Java 库)而不是使用单独的 JAR。
顺便说一下,您没有说明 "the libraries I have added" 的意思。将包含本机库的 JAR 放入与包含 Java 库的目录相同的目录中,并将包含 Java 库的 JAR 添加到类路径中,或者将 jogamp-fat.jar 放入类路径中(最简单且最不容易出错的解决方案)。
对我来说,我是 运行 IntelliJ 中的 Maven 项目,具有以下依赖项:
<dependency>
<groupId>org.jogamp.jogl</groupId>
<artifactId>jogl-all-main</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>org.jogamp.gluegen</groupId>
<artifactId>gluegen-rt</artifactId> <!-- This is incorrect -->
<version>2.3.2</version>
</dependency>
将第二个依赖项从 gluegen-rt 更改为 gluegen-rt-main 后,错误消失了。