Ответ 1
Обычно вы должны установить java.library.path
в командной строке JVM:
java -Djava.library.path=/path/to/my/dll -cp /my/classpath/goes/here MainClass
Я участвую в разработке Java-проекта, который использует некоторые компоненты С++, поэтому мне нужен Jacob.dll. (в Windows 7)
Я продолжаю получать java.lang.UnsatisfiedLinkError: no JacobDB in java.library.path
независимо от того, где я помещаю Jacob.dll....
Я искал возможные решения, и тот, который я еще не пробовал, устанавливает переменную LD_LIBRARY_PATH, указывая на файл .dll.
У меня мало опыта, и я не знаком с тем, что должно быть значением и использованием этой переменной - можете ли вы мне помочь?
Обычно вы должны установить java.library.path
в командной строке JVM:
java -Djava.library.path=/path/to/my/dll -cp /my/classpath/goes/here MainClass
LD_LIBRARY_PATH
- это предопределенная переменная окружения в Linux/Unix, которая задает путь, на который должен ссылаться компоновщик, при связывании динамических библиотек/разделяемых библиотек.
LD_LIBRARY_PATH
содержит список путей, разделенных двоеточиями, и компоновщик дает приоритет этим путям по стандартным путям библиотеки /lib
и /usr/lib
. Стандартные пути будут по-прежнему выполняться, но только после исчерпания списка путей в LD_LIBRARY_PATH
.
Лучший способ использовать LD_LIBRARY_PATH
- установить его в командной строке или script непосредственно перед выполнением программы. Таким образом, новый LD_LIBRARY_PATH
изолирован от остальной части вашей системы.
Пример использования:
$ export LD_LIBRARY_PATH="/list/of/library/paths:/another/path"
$ ./program
Поскольку вы говорите о .dll
, вы находитесь в системе Windows, а .dll
должен быть помещен по пути, который компоновщик выполняет поиск по времени ссылки, в окнах этот путь задается переменной окружения PATH
, So добавьте, что .dll
в PATH
, и он должен работать нормально.
LD_LIBRARY_PATH является специфичным для Linux и представляет собой переменную среды, указывающую на каталоги, в которых динамический загрузчик должен искать разделяемые библиотеки.
Попробуйте добавить каталог, в котором ваша .dll находится в переменной PATH. Windows будет автоматически искать в списке каталогов эту переменную среды. LD_LIBRARY_PATH, вероятно, не решит проблему (если JVM не использует ее - я об этом не знаю).
Ну, сообщение об ошибке сообщает вам, что делать: добавьте путь, где Jacob.dll находится в java.library.path. Вы можете сделать это в командной строке следующим образом:
java -Djava.library.path="dlls" ...
(предполагая, что Jacob.dll находится в папке "dlls" )
Также см. java.lang.UnsatisfiedLinkError no *****. dll в java.library.path