Собственные библиотеки не найдены в 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"