Как добавить нативную библиотеку в Tomcat?

Я хочу добавить библиотеку GDAL в Tomcat. Я читаю Собственные библиотеки, которых нет в Tomcat, но не понимаю, где в startup.bat Я должен добавить -Djava.library.path,

Ошибки:

exception

javax.servlet.ServletException: Servlet execution threw an exception
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:72)
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:70)

root cause

java.lang.UnsatisfiedLinkError: org.gdal.ogr.ogrJNI.GetDriverCount()I
org.gdal.ogr.ogrJNI.GetDriverCount(Native Method)
org.gdal.ogr.ogr.GetDriverCount(ogr.java:98)
org.geotools.data.ogr.OGRDataStore.<clinit>(OGRDataStore.java:169)
test.Read.getKadnum(Read.java:56)
test.Zipper.mifUnzip(Zipper.java:139)
test.Zipper.Unzip(Zipper.java:60)
test.uploadfile.doPost(uploadfile.java:105)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:72)
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:70)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.23 logs.

Я скачал gdal 64bit с: http://vbkto.dyndns.org:1280/sdk/PackageList.aspx?file=release-1600-x64-gdal-1-9-mapserver-6-2.zip

3 ответа

Решение

Это должно быть настроено в catalina.bat вместо startup.bat.

set JAVA_OPTS="-Djava.library.path=/usr/tomcat/shared/lib"

можно поставить после

:noJuliManager
set JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%

Принятый ответ (по состоянию на февраль 2016 года) просто неверен.

  • Вы никогда не должны редактировать catalina.bat / catalina.sh, Не надо! (Единственный файл в Tomcat's bin/ Дир, что вы должны коснуться setenv.bat).

  • Правильная переменная конфигурации CATALINA_OPTSне JAVA_OPTS,

  • Если вы работаете в Windows, вы не хотите указывать значение для команды SET, поскольку кавычки становятся частью действительного значения. (в отличие от Unix/Linux)

  • Вероятно, вы захотите сохранить то, что уже есть в java.library.path,

(далее я предполагаю, что вы работаете в Windows, измените соответственно для Linux/Solaris/Mac OSX).

Вот как это сделать: положить файл с именем setenv.bat в тот же каталог, что и catalina.bat, Файл не будет существовать, если вы не создали его ранее. Итак, создайте файл. Он должен иметь следующий контент для ваших целей:

set CATALINA_OPTS=%CATALINA_OPTS% -Djava.library.path=%PATH%;c:\mydlls

На винде java.library.path по умолчанию будет %PATH% поэтому альтернативным путем ко всему вышесказанному было бы изменить переменную среды PATH.

Если вы не хотите путать, откуда именно JVM будет загружать ваши нативные библиотеки, пропустите %PATH%; часть из вышеперечисленного. Лично я опускаю %PATH% по этой причине, но это дело вкуса.

Согласно комментариям на catalina.bat, я думаю, что правильное место - CATALINA_OPTS.

rem   CATALINA_OPTS   (Optional) Java runtime options used when the "start",
rem                   "run" or "debug" command is executed.
rem                   Include here and not in JAVA_OPTS all options, that should
rem                   only be used by Tomcat itself, not by the stop process,
rem                   the version command etc.
rem                   Examples are heap size, GC logging, JMX ports etc.
Другие вопросы по тегам