Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Tomcat中添加本机库?_Java_Tomcat_Java.library.path - Fatal编程技术网

Java 如何在Tomcat中添加本机库?

Java 如何在Tomcat中添加本机库?,java,tomcat,java.library.path,Java,Tomcat,Java.library.path,我想在Tomcat中添加gdal库。我读了,但不明白在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:

我想在Tomcat中添加gdal库。我读了,但不明白在
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.
异常
javax.servlet.ServletException:servlet执行引发异常
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:72)
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:70)
根本原因
java.lang.UnsatisfiedLinkError:org.gdal.ogr.ogrJNI.GetDriverCount()I
org.gdal.ogr.ogrJNI.GetDriverCount(本机方法)
org.gdal.ogr.ogr.GetDriverCount(ogr.java:98)
org.geotools.data.ogr.OGRDataStore(OGRDataStore.java:169)
test.Read.getKadnum(Read.java:56)
test.Zipper.mifUnzip(zippers.java:139)
test.Zipper.Unzip(zippers.java:60)
test.uploadfile.doPost(uploadfile.java:105)
javaservlet.http.HttpServlet.service(HttpServlet.java:641)
javaservlet.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)
注意,根本原因的完整堆栈跟踪可在Apache Tomcat/7.0.23日志中找到。

我从以下位置下载了gdal 64位:

它必须在
catalina.bat
中设置,而不是在startup.bat中

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

:noJuliManager
set JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%

根据catalina.bat上的评论, 我认为合适的地方是卡塔琳娜奥普斯

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.
公认的答案(截至2016年2月)完全是错误的

  • 你从来都不应该编辑catalina.bat/
    catalina.sh
    。不要!(在Tomcat的
    bin/
    目录中,您应该触摸的唯一文件是
    setenv.bat

  • 右边的配置变量是
    CATALINA\u OPTS
    ,而不是
    JAVA\u 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:\mydll
在Windows上,
java.library.path
将默认为
%path%
,因此上述所有操作的另一种方法是更改path环境变量


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

最好解释一下要修改的文件,它看起来像是在Java世界中开始的OP。在startup.bat中找不到这一行
:noJuliManager
。@KliverMax来自异常,如
org.gdal.ogr.ogr.GetDriverCount(ogr.Java:98)
您可以看到lib文件已成功加载。我认为这个例外是关于lib文件本身的用法,我不熟悉。您可能想提出另一个关于gdal库的问题。
set JAVA_OPTS=“-Djava.library.path=%CATALINA\u BASE%\lib”
我使用了这个,对吗?正如下面@peterh所说的,您永远不应该编辑CATALINA.bat/.sh。这应该在setenv.bat中。这是正确的,它是
CATALINA\u OPTS
,而不是
JAVA\u OPTS
(虽然从技术上讲后者也可以)。但是确实有很多。
setenv.bat
在默认的TC8.5zip中是不存在的。请在
bin
-中创建它,并阅读
RUNNING.txt
ch3.4In linux/osx在bin文件夹中创建“setenv.sh”,并添加行:export CATALINA_OPTS=“$CATALINA_OPTS-Djava.library.path=…”