【发布时间】:2011-02-02 18:45:20
【问题描述】:
背景
所以我试图在运行时将 jnilib(特别是 JOGL)加载到 Mac OS X 上的 Java 中。我一直在关注相关的 Stack Overflow 问题:
- Maven and the JOGL Library
- Loading DLL in Java - Eclipse - JNI
- How to make a jar file that include all jar files
我的最终目标是将特定于平台的 JOGL 文件打包到 JAR 中,然后将它们解压缩到临时目录并在启动时加载它们。我解决了我的问题,简单地尝试使用硬编码路径加载 JOGL:
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 时出现以下异常:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jogl in java.library.path
但是当我通过添加以下 JVM 选项来指定 java.library.path 时:
-Djava.library.path="/var/folders/+n/+nfb8NHsHiSpEh6AHMCyvE+++TI/-Tmp-/"
一切正常。
问题
是否可以在 Mac OS X 上使用 System.load(或其他一些变体)来替代在运行时调用的 -Djava.library.path?
【问题讨论】:
标签: java macos java-native-interface jogl