Loading JNI lib on Mac OS X?(在 Mac OS X 上加载 JNI 库?)
问题描述
背景
所以我试图在 Mac OS 上将 jnilib(特别是 JOGL)加载到 Java 中X 在运行时.我一直在关注相关的 Stack Overflow 问题:
So I am attempting to load a jnilib (specifically JOGL) into Java on Mac OS X at runtime. I have been following along the relevant Stack Overflow questions:
- Maven 和 JOGL 库
- 在 Java - Eclipse - JNI 中加载 DLL
- 如何制作一个包含所有jar文件的jar文件李>
我的最终目标是将特定于平台的 JOGL 文件打包到 JAR 中,然后将它们解压缩到临时目录并在启动时加载它们.我解决了我的问题,简单地尝试使用硬编码路径加载 JOGL:
The end goal for me is to package platform specific JOGL files into a JAR and unzip them into a temp directory and load them at start-up. I worked my problem back to simply attempting to load JOGL using hard-coded paths:
File f = new File("/var/folders/+n/+nfb8NHsHiSpEh6AHMCyvE+++TI/-Tmp-/libjogl.jnilib");
System.load(f.toString());
f = new File ("/var/folders/+n/+nfb8NHsHiSpEh6AHMCyvE+++TI/-Tmp-/libjogl_awt.jnilib");
System.load(f.toString());
尝试使用 JOGL API 时出现以下异常:
I get the following exception when attempting to use the JOGL API:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jogl in java.library.path
但是当我通过添加以下 JVM 选项来指定 java.library.path
时:
But when I specify java.library.path
by adding the following JVM option:
-Djava.library.path="/var/folders/+n/+nfb8NHsHiSpEh6AHMCyvE+++TI/-Tmp-/"
一切正常.
问题
是否可以在 Mac OS X 上使用 System.load
(或其他一些变体)来替代在运行时调用的 -Djava.library.path?
Is it possible use System.load
(or some other variant) on Mac OS X as a replacement for -Djava.library.path that is invoked at runtime?
推荐答案
Jogl 总是尝试自动加载所有依赖库.为了避免这种情况,应该有一个 NativeLibLoader 类,您可以在通过 System.load() 自己加载库之前调用 disableLoading()
Jogl always tries to auto-load all dependent libraries. To avoid this, there should be a NativeLibLoader class where you can call disableLoading() before you load the libraries yourself via the System.load()
这篇关于在 Mac OS X 上加载 JNI 库?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在 Mac OS X 上加载 JNI 库?
基础教程推荐
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01