Я работаю над java-компонентом, которому нужны некоторые библиотеки, т.е. .dll
для системы Windows и .so
файлы для системы Linux. Итак, я подготовил java-приложение в netbeans, добавил несколько зависимостей и построил проект.
Выполнение в Windows:
Когда я попытался запустить файл jar в системе Windows с помощью команды java -jar appName.jar
, я получил java.lang.UnsatisfiedLinkError
, поэтому я указал java.library.path во время выполнения, например java -Djava.library.path=full\\path\\to\\libs -jar appName.jar
, и он успешно запустился в Windows.
Выполнение в Linux (ubuntu):
Когда я попытался выполнить тот же файл jar в Ubuntu с помощью той же команды java -Djava.library.path=/path/to/libs -jar appName.jar
, я получил сообщение об ошибке, говорящее о том, что некоторые файлы .so не найдены в указанном месте (я проверил местоположение файла и права доступа, все в порядке)
Обновлено (добавлена ошибка):
ubuntu@ubuntu-HP-dx2480-MT-KL969AV:~/Desktop$ java -Djava.library.path=/home/ubuntu/Desktop/bin -jar JavaApplication4.jar
инициализировать в потоке [AWT-EventQueue-0,6, main] с путем к библиотеке bin bin/jcef_helper: ошибка при загрузке общих библиотек: libcef.so: невозможно открыть общий объектный файл: нет такого файла или каталога
содержит папку bin
-rwxr-xr-x 1 ubuntu ubuntu 1483321 Jun 18 2014 cef.pak
-rwxr-xr-x 1 ubuntu ubuntu 3258231 Jun 18 2014 devtools_resources.pak
-rwxr-xr-x 1 ubuntu ubuntu 971264 Jun 11 2014 ffmpegsumo.dll
-rwxr-xr-x 1 ubuntu ubuntu 9994752 Jun 11 2014 icudt.dll
-rwxr-xr-x 1 ubuntu ubuntu 429568 Jun 18 2014 jcef.dll
-rwxr-xr-x 1 ubuntu ubuntu 481488 Jun 18 2014 jcef_helper
-rwxr-xr-x 1 ubuntu ubuntu 233984 Jun 18 2014 jcef_helper.exe
-rwxr-xr-x 1 ubuntu ubuntu 53280768 Jun 11 2014 libcef.dll
-rwxr-xr-x 1 ubuntu ubuntu 105317136 Jun 18 2014 libcef.so
-rwxr-xr-x 1 ubuntu ubuntu 1309288 Jun 18 2014 libffmpegsumo.so
-rwxr-xr-x 1 ubuntu ubuntu 1047296 Jun 18 2014 libjcef.so drwxrwxrwx 2 ubuntu ubuntu 4096 Dec 23 11:29 locales
Путем поиска я узнал, что пытался использовать переменную среды LD_LIBRARY_PATH
, поэтому я создал файл sh с командой:
export LD_LIBRARY_PATH=/path/to/libs
java -jar /path/to/appName.jar
и когда я запускаю файл sh, моя программа работает успешно.
Итак, мой вопрос: почему java.library.path не работает для Ubuntu (Linux)? Похоже, что java.library.path
только для Windows?
-Djava.library.path=path/to/libs
это опечатка или здесь используется относительный путь? - person PeterMmm   schedule 23.12.2014/home/ubuntu/Desktop/bin
, может быть, этим библиотекам нужны другие библиотеки, которых здесь нет? Помните, чтоjava.library.path
может содержать несколько путей. - person PeterMmm   schedule 23.12.2014LD_LIBRARY_PATH
работает, как? - person Amogh   schedule 23.12.2014LD_LIBRARYN32_PATH
. - person PeterMmm   schedule 23.12.2014ls -l /home/ubuntu/Desktop/bin
- person secmask   schedule 23.12.2014jarsplice
для создания собственного приложения jar вот полезная ссылка jarsplice - person Bhargav Modi   schedule 23.12.2014LD_LIBRARY_PATH=/home/ubuntu/Desktop/bin java -Djava.library.path=/home/ubuntu/Desktop/bin -jar /jar/path.jar
- person secmask   schedule 23.12.2014run.sh
из двоичного пакета jcef. - person secmask   schedule 23.12.2014