如何在Tomcat中添加本机库?

时间:2012-12-24 08:11:32

标签: java tomcat nativelibrary

我想在Tomcat中添加gdal库。我看过Native libraries not found in 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.

我从http://vbkto.dyndns.org:1280/sdk/PackageList.aspx?file=release-1600-x64-gdal-1-9-mapserver-6-2.zip

下载了gdal 64bit

3 个答案:

答案 0 :(得分:30)

接受的答案(截至2016年2月)是完全错误的。

  • 从不应该编辑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%因为这个原因,但这是一个品味问题。

答案 1 :(得分:12)

必须在catalina.bat而不是startup.bat。

中进行设置
set JAVA_OPTS="-Djava.library.path=/usr/tomcat/shared/lib"

可以放在

之后
:noJuliManager
set JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%

答案 2 :(得分:5)

根据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.