Собственные библиотеки не найдены в Tomcat

Я разработал приложение GWT, которое включает в себя некоторые нативные библиотеки с JNI. когда я тестирую его из eclipse, все работает нормально, но когда я пытаюсь развернуть его на моем сервере Eclipse, он не может найти нативные библиотеки.

Я следовал этому руководству для JNI и Tomcat

но это все еще не может найти их, я заметил. Что когда я читаю java.library.path изнутри моего серверного приложения оно отличается от того, что я получаю при запуске Tomcat (отображение переменных пути с помощью set path).

Есть идеи, что мне не хватает?

2 ответа

Решение

Простейшим ответом может быть редактирование вашей установки Tomcat bin/startup скрипт для изменения java.library.path куда бы вы ни копировали нативную библиотеку. Что-то вроде

java -Djava.library.path=/path/to/my/libs existing args

Если вы используете провайдера виртуального хостинга, вам необходимо проконсультироваться с владельцем, чтобы определить, разрешат ли они загрузку нативных библиотек в контейнер и есть ли конкретное место, куда следует копировать библиотеки.

Кроме того, существует мета проблема, связанная с тем, что ваша среда разработки отличается от среды развертывания. В идеале у вас должна быть точная копия (или как можно ближе) конфигурации развертывания, работающей на вашем локальном компьютере разработки.

Я тоже с этим боролся. В конечном итоге у меня получилось поместить библиотеки JNI в tomcat/shared/lib каталог и установить LD_LIBRARY_PATH переменная окружения с путем к библиотеке JNI. Я также установил JAVA_OPTS переменная среды, чтобы включить -Djava.library.path вариант.

Tomcat 7, кстати.

Вам нужно будет создать shared/lib каталоги, если они не существуют.

На моем Linux-сервере это так:

LD_LIBRARY_PATH=/usr/tomcat/shared/lib:$LD_LIBRARY_PATH
JAVA_OPTS="-Djava.library.path=/usr/tomcat/shared/lib"
Другие вопросы по тегам