Альтернативы настройке java.library.path? - PullRequest
5 голосов
/ 26 мая 2011

У меня есть программа на Java, которая делает некоторые вызовы JNI в нативную библиотеку ("mylib.so"). Всякий раз, когда я хочу запустить эту программу, из командной строки я должен установить java.library.path в расположение моей библиотеки как таковое:

java -Djava.library.path=/var/natives/ -classpath MyPackage.jar MyPackage.MyClass arg1 arg2

Мне интересно, есть ли альтернативы, поэтому мне не нужно устанавливать его с опцией -D каждый раз, когда я запускаю свою программу.

Я попытался добавить /var/natives/ к моей переменной $ PATH, но он по-прежнему жалуется, что не может найти библиотеку, если я не установил ее явно с -D.

Есть ли у меня другие варианты?

Ответы [ 4 ]

2 голосов
/ 27 мая 2011

Просто поместите всю команду в файл .sh, чтобы не повторять ее каждый раз.

1 голос
/ 27 мая 2011

Вместо использования System.loadLibrary("mylib") используйте System.load("/var/natives/mylib.so").

Или вы можете определить пользовательский загрузчик классов для класса и переопределить метод ClassLoader.findLibrary(String).

0 голосов
/ 27 мая 2011

Другая возможность - создать собственную переменную с включенными в нее переключателями.Например:

COMPILE="-Djava.library.path=/var/natives/ -classpath /var/packages/MyPackage.jar"

Затем выполните команду как:

java $COMPILE MyPackage.MyClass arg1 arg2 arg3
0 голосов
/ 27 мая 2011

Одно место, которое вы можете поместить (которое, по общему признанию, может быть неоптимальным), находится в каталоге [JRE]/lib/i386 (или [JRE]/lib/x64 или как там его называют в 64-битной установке Java).

Кроме того, вы пытались вставить /var/natives в LD_LIBRARY_PATH?

...