Как добавить родную библиотеку в 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

Ответ 1

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

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

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

:noJuliManager
set JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%

Ответ 2

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

  • Вы никогда должны редактировать catalina.bat/catalina.sh. Не надо! (Единственный файл в директории Tomcat 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

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

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

Ответ 3

Согласно комментариям на 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.