为tomcat设置java.library.path
我目前正在尝试让一个Tomcat应用程序在Maven上运行,并带有一个本机库,它需要一个指定的java.library.path。通常,要使用路径运行Tomcat,必须做一些事情,比如将路径添加到Tomcat: 但在本例中,我想使用Maven插件运行Tomcat,不幸的是,我找不到关于如何为Tomcat Maven插件设置java.library.path的任何提示。仅使用为tomcat设置java.library.path,java,maven,tomcat,Java,Maven,Tomcat,我目前正在尝试让一个Tomcat应用程序在Maven上运行,并带有一个本机库,它需要一个指定的java.library.path。通常,要使用路径运行Tomcat,必须做一些事情,比如将路径添加到Tomcat: 但在本例中,我想使用Maven插件运行Tomcat,不幸的是,我找不到关于如何为Tomcat Maven插件设置java.library.path的任何提示。仅使用-Djava.library.path=XX设置argLine不起作用。有人知道如何在Tomcat Maven插件中包含本机
-Djava.library.path=XX设置argLine
不起作用。有人知道如何在Tomcat Maven插件中包含本机库吗
应该根据的一种方法是使用System.setProperty(“java.library.path”,javaLibPath)设置路径然后让类加载器用
Field field = ClassLoader.class.getDeclaredField("sys_paths");
field.setAccessible(true);
field.set(null, null);
不幸的是,对我来说,这不起作用,无论如何都会抛出错误。(此提示也由给出)
另一种方法(不是为了解决真正的问题,而是为了解决我不知道如何在Tomcat Maven插件中加载setjava.library.path
)的问题,似乎是在程序运行期间添加库,如下所述:。不幸的是,这也不起作用
File f2 = new File("/home/my/absolute/path");
for (File f : f2.listFiles()){
System.out.println("Datei: " + f.getAbsolutePath());
if (f.isFile() && f.getName().endsWith(".so")){
System.out.println("Loading: " + f.getAbsolutePath());
// System.loadLibrary(f.getName());
System.load(f.getAbsolutePath());
}
}
这有两种可能的结果:如果我像这样尝试,就会抛出相同的错误,就好像根本没有加载库一样。如果我使用System.loadLibrary
,它找不到库,因为库不在java.library.path
中,System.loadLibrary
不采用绝对路径-因此总的来说,这种方法也不起作用,至少我是如何尝试的。这个问题的一个可能的解决方案是,我用另一种方式编程设置java.library.path(从):
由于这似乎仍然不是一个真正好的解决方案(因为应该可以通过tomcat以某种方式设置路径),我很高兴听到关于这个问题的其他解决方案。我得到了mvn tomcat:run
来使用opencv\u java249.so文件,方法是使用MAVEN\u OPTS
简单地做:
MAVEN_OPTS=-Djava.library.path=/path/to/your/native/libfolder
很好。我在我的机器上使用了一个绝对路径,它正在工作。我还没试过亲戚的 您可以在pom.xml中为tomcat maven插件设置java.library.path,如下所示:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<systemProperties>
<java.library.path>${basedir}/libraryfolder</java.library.path>
</systemProperties>
</configuration>
</plugin>
org.apache.tomcat.maven
tomcat7 maven插件
2.2
${basedir}/libraryfolder
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<systemProperties>
<java.library.path>${basedir}/libraryfolder</java.library.path>
</systemProperties>
</configuration>
</plugin>