如何在Tomcat中添加原生库?

2022-09-03 08:40:24

我想在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


答案 1

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

  • 永远不应该编辑 / .不要!(Tomcat 的目录中唯一应该触摸的文件是 )。catalina.batcatalina.shbin/setenv.bat

  • 正确的配置变量是 ,而不是 。CATALINA_OPTSJAVA_OPTS

  • 如果您使用的是Windows,那么您不希望引用SET命令的值,因为引号成为实际值的一部分。(与Unix/Linux不同)

  • 您可能希望保留 中已有的内容。java.library.path

(在下面,我假设你使用的是Windows,针对Linux/Solaris/Mac OSX进行相应的更改)。

操作方法如下:将调用的文件放入与 相同的目录中。该文件将不存在,除非您之前已自行创建它。因此,请创建该文件。它必须具有以下内容以用于您的目的:setenv.batcatalina.bat

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

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

如果您不想对 JVM 加载本机库的确切位置产生混淆,请省略上面的部分。就我个人而言,由于这个原因,我省略了,但这是一个品味问题。%PATH%;%PATH%


答案 2

它必须设置在而不是启动.bat。catalina.bat

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

可以放在之后

:noJuliManager
set JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%

推荐