【问题标题】:How to load native JOGL .jnilib extensions on Mac OSX by exported app.jar?如何通过导出的 app.jar 在 Mac OSX 上加载本机 JOGL .jnilib 扩展?
【发布时间】:2013-05-05 00:12:43
【问题描述】:

问题似乎是在 Mac OSX(而不是 Windows)上,jogl.jar 要求本机扩展位于特定的系统路径 /System/Library/Java/Extensions/(如 http://cs.gmu.edu/~jchen/graphics/jogl/notes/joglSetup.html 中所述)。

但是,我正在分发这个应用程序,我无法要求我的用户将随机 .jnilib 文件复制到系统文件夹中,尤其是当我的用户相对技术不可知时。

然后我尝试创建一个 Visualizer.command 文件:

java -Djava.library.path=./lib/opengl-natives/macosx/ -jar ./viz.jar

并将所需的库放在指定的路径中,但这也不起作用。

在 Windows 上,只需将本机 .dll 与 .jar 文件放在同一文件夹中即可,但有人告诉我,在 unix 系统(如 Mac)上,这不起作用,因为默认情况下 unix 不加载库除非另有说明,否则从当前工作目录开始。

编辑: 仅供参考,这是我在 Windows 上用于执行相同库加载的 Visualizer.bat 文件:

java -Djava.library.path=.\lib\opengl-natives\windows32 -jar parking-viz.jar

【问题讨论】:

  • 你不能创建一个安装程序来检查扩展/安装它们吗?
  • SJuan76,这不是必须的,Xerxes 是对的。没有什么特别的事情要做。一开始 jogl.jar 已经不存在了,它来自 JOGL 1 没有维护,他应该使用积极维护的 JOGL 2。 JOGL 2 将其所有本机库存储到 JAR 中,它们只需要位于与包含类(jogl-all.jar 和 gluegen-rt.jar)的 JOGL 和 GlueGen JAR 相同的目录中,或者在最坏的情况下,您可以创建单个包含您的应用程序和 JOGL 的胖 JAR。无论如何,没有要设置的 Java 库路径,也没有要复制到目录中的本地库。
  • 此外,上面引用的网页已经完全过时,它指向完全过时的 JOGL JAR(JSR 231 beta 5,比 JOGL 1 还要早)。这个极其旧版本的 JOGL 无法在现代 Mac 上运行。而是去jogamp.org

标签: java macos java-native-interface jogl


【解决方案1】:

使用 JogAmp JOGL 2 时,本机扩展不再需要位于特定的系统路径中,您只需将 jogl-all.jar 和 gluegen-rt.jar 包含到您的项目中。如果它们位于 jogl-all.jar 和gluegen-rt.jar 旁边,所有macos x 特定的本地jar 将在运行时自动找到 http://jogamp.org/wiki/index.php/Setting_up_a_JogAmp_project_in_your_favorite_IDE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 2016-04-08
    • 1970-01-01
    相关资源
    最近更新 更多