【发布时间】:2018-07-16 19:58:15
【问题描述】:
我在 OSX 10.7.5、Eclipse 3.8.0 上,使用 JDK 1.7。我正在尝试使用 jzy3d 和 JogAmp 构建一个项目:尤其是 jogl、gluegen 和 gluegen-rt。
我已按照本教程在我的 java 项目中为 JOGL 设置用户库。 https://jogamp.org/wiki/index.php/Setting_up_a_JogAmp_project_in_your_favorite_IDE
我收到此错误消息:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: /Users/brendengarrison/Documents/workspace/jzy3d-15/natives/macosx-universal//gluegen-rt
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1854)
at java.lang.Runtime.load0(Runtime.java:795)
at java.lang.System.load(System.java:1062)
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 org.jzy3d.chart.Settings.detectProfile(Settings.java:30)
at org.jzy3d.chart.Settings.<init>(Settings.java:14)
at org.jzy3d.chart.Settings.getInstance(Settings.java:47)
at org.jzy3d.analysis.AnalysisLauncher.open(AnalysisLauncher.java:17)
at org.jzy3d.analysis.AnalysisLauncher.open(AnalysisLauncher.java:13)
at Test15.main(Test15.java:18)
我的gluegen-rt-2.3.3.jar、gluegen-2.3.2.jar 和jogl-all-2.3.2.jar 和我的本地人一样位于一个名为/jzy3d-newDependencies 的文件夹中:gluegen-rt -natives-macosx-universal.jar 和 jogl-all-natives-macosx-universal.jar。
按照教程的说明,我将本地人排除在类路径之外,但我不确定我是否理解了收到此错误消息的说明。我需要将本地人放在哪里以便gluegen-rt可以找到它们?
【问题讨论】:
-
我有一段时间没有积极使用/设置 JOGL,但是......当你做将
...nativesJAR 添加到类路径时它不起作用吗? -
我确实尝试过,但得到了相同的错误消息。可能存在潜在问题,无论它是否找到库,都会出现相同的错误。错误消息说它无法加载库,而不是找不到它......那么,你知道我该如何进一步调查吗?
-
当它实际上应该说“找不到”时,它还说“无法加载”(错误消息令人痛苦地不明确)。你现在好像解决了? (最好的办法可能是让 Maven 弄清楚这一切,这通常效果最好(或者至少,比手动收集所需的 JAR 更容易......)
-
@Marco13 包含 Java 库的 JAR 必须位于与包含本机库的 JAR 相同的目录中,以便 GlueGen 找到并加载它们,即使后者的 JAR 不需要位于类路径,因为它们不包含类。
-
@gouessej 好的...我想知道将它们放在同一个目录中的必要性来自哪里。当涉及到 JAR 时,我认为 Java“不知道目录”(或文件系统)。当 JAR 位于类路径上时,可以将本机作为资源加载。 (至少,这就是我在 JCuda 和 JOCL 中所做的,例如在 github.com/gpu/JOCL/blob/master/src/main/java/org/jocl/… )。但是我还没有研究过JOGL/GlueGen native lib处理的细节。
标签: java eclipse native jogl jzy3d