【问题标题】:JogAmp gluegen-rt can't find native libraryJogAmp gluegen-rt 找不到本机库
【发布时间】: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,但是......当你...natives JAR 添加到类路径时它不起作用吗?
  • 我确实尝试过,但得到了相同的错误消息。可能存在潜在问题,无论它是否找到库,都会出现相同的错误。错误消息说它无法加载库,而不是找不到它......那么,你知道我该如何进一步调查吗?
  • 当它实际上应该说“找不到”时,它还说“无法加载”(错误消息令人痛苦地不明确)。你现在好像解决了? (最好的办法可能是让 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


【解决方案1】:

由于我使用的是 JogAmp 2.3.2,因此我必须使用 2.3.2 的更新本机,可以在这里下载:http://search.maven.org/#search%7Cga%7C2%7Cjogamp

Jzy3d 带有过时的原生。

【讨论】:

  • 你从哪里得到这个带有过时原生库的 Jzy3D 版本?特定版本的 Jzy3D 与特定版本的 JOGL 匹配。您不能将任何版本的 Jzy3D 与任何版本的 JOGL 结合使用。而且,你不需要gluagegen,你需要gluegen-rt。
  • 顺便说一句,Java 库也必须与本地库匹配。
  • 谢谢。我从 github 下载了 Jzy3D,但我从 Jzy3D 网站下载了本机。他们是网站上唯一的本地人,所以我错误地认为他们可以使用任何版本的 Jzy3D。
  • 顺便说一句,我现在正在尝试从我的 Windows 虚拟机运行这个项目。本地人为 mac 工作,但在 windows 机器上,Jzy3D 图形不会加载。我认为 Windows Natives 没有加载,因为当我遇到 Mac Natives 问题时,我的 Mac 上也发生了同样的事情。我的机器是带有 64 位 JRE 的 64 位窗口和来自上面链接的 64 位本地窗口。有什么建议吗?
  • 您使用哪个版本的 JZy3D?我建议您使用最新的源代码来构建它并与 JOGL 2.3.2 一起使用。如果您想让事情变得更轻松,请使用 jogamp-fat.jar 而不是 Java 和本机库的大量 JAR。
猜你喜欢
  • 2013-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多