Собственные библиотеки не найдены в Tomcat - PullRequest
2 голосов
/ 27 мая 2011

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 03 июня 2011

Я тоже с этим боролся.В конечном итоге мне удалось поместить библиотеки 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"
3 голосов
/ 28 мая 2011

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

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

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

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

...