为tomcat设置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插件中包含本机

我目前正在尝试让一个Tomcat应用程序在Maven上运行,并带有一个本机库,它需要一个指定的java.library.path。通常,要使用路径运行Tomcat,必须做一些事情,比如将路径添加到Tomcat:

但在本例中,我想使用Maven插件运行Tomcat,不幸的是,我找不到关于如何为Tomcat Maven插件设置java.library.path的任何提示。仅使用
-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插件中加载set
java.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>