15

我想在 Tomcat 中添加 gdal 库。我阅读了在 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

4

3 回答 3

37

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

  • 永远不应该编辑catalina.bat/ catalina.sh。不 !bin/(您应该触摸的Tomcat 目录中唯一的文件是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

在 Windowsjava.library.path上将默认为,%PATH%因此上述所有方法的替代方法是更改​​您的 PATH 环境变量。

如果您不想混淆 JVM 将从何处加载您的本地库,请忽略%PATH%;上面的部分。我个人出于这个原因省略%PATH%了,但这是一个品味问题。

于 2016-02-22T11:54:52.690 回答
10

必须设置它catalina.bat而不是 startup.bat。

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

可以放在后面

:noJuliManager
set JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%
于 2012-12-24T08:15:10.047 回答
6

根据 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.
于 2014-04-01T08:46:56.007 回答