Фон
Итак, я пытаюсь загрузить jnilib (в частности, JOGL) в Java на Mac OS X во время выполнения . Я слежу за соответствующими вопросами о переполнении стека:
- Maven и библиотека JOGL
- Загрузка DLL в Java - Eclipse - JNI
- Как создать файл jar, включающий все файлы jar
Конечная цель для меня - упаковать файлы 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
Но когда я указываю java.library.path
, добавляя следующую опцию JVM:
-Djava.library.path="/var/folders/+n/+nfb8NHsHiSpEh6AHMCyvE+++TI/-Tmp-/"
Все нормально работает.
Вопрос
Можно ли использовать System.load
(или какой-либо другой вариант) в Mac OS X в качестве замены -Djava.library.path, который вызывается во время выполнения?