Я создал файл .dylib
, который хочу загрузить с использованием JNI, и я не могу заставить программу Java найти его.
Я программно проверил значение java.library.path
, и оно было:
/Users/potato/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
Когда я поместил мой .dylib
файл в одну из этих папок, моя Java-программа без проблем обнаружила и загрузила файл .dylib
, но когда я попытался изменить java.library.path
, включив в него путь к папке на рабочем столе, и поместил файл .dylib
на моем рабочем столе, программа не может его найти.
System.setProperty("java.library.path", "/Users/potato/Desktop:" + System.getProperty("java.library.path"));
System.out.println(System.getProperty("java.library.path"));
System.loadLibrary("winfnc");
output:
/Users/potato/Desktop:/Users/potato/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no winfnc in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1857)
Есть идеи, что я делаю не так? Есть ли способ заставить программу найти файл .dylib
в любой папке, которую я хочу, или, что еще лучше, в своем собственном файле .jar
и успешно загрузить его?
РЕДАКТИРОВАТЬ: один ответ предлагает решение, которое использует командную строку, но я хотел бы иметь возможность запустить приложение, дважды щелкнув исполняемый файл .jar
и не нужно беспокоиться о каких-либо технические формальности.
Существует возможность добавить аргументы VM в Eclipse, но они используются только при запуске программы из Eclipse, а не при непосредственном открытии исполняемого файла .jar
.