gpt4 book ai didi

java - 为tomcat设置java.library.path

转载 作者:行者123 更新时间:2023-11-28 21:54:07 24 4
gpt4 key购买 nike

我目前正在尝试使用带有 native 库的 Maven 运行 Tomcat 应用程序,这需要指定的 java.library.path。通常,要使用路径运行 Tomcat,必须执行一些操作,例如将路径添加到 Tomcat:How to add a native library in Tomcat? .

但在这种情况下,我想使用 Maven 插件运行 Tomcat,不幸的是,我找不到任何关于如何为 Tomcat-Maven 插件设置 java.library.path 的提示。仅使用 -Djava.library.path=XX 设置 argLine 不起作用。有没有人知道如何使用 Tomcat-Maven 插件包含 native 库?

根据 https://groups.google.com/forum/#!msg/maven-nar/1mz9oWj-65U/dbQEK_6DLdYJ 应该工作的一种方式正在使用 System.setProperty("java.library.path", javaLibPath); 设置路径,然后让类加载器使用

重新加载它
Field field = ClassLoader.class.getDeclaredField("sys_paths");
field.setAccessible(true);
field.set(null, null);

不幸的是,对我来说这不起作用,无论如何都会抛出错误。 (此提示也由 http://blog.cedarsoft.com/2010/11/setting-java-library-path-programmatically/ 给出)。

另一种方法(不是解决真正的问题,而是解决我不知道在 Tomcat-Maven 插件中加载集 java.library.path 的方法)似乎是在程序运行期间添加库,如此处的示例所述:Directory separator should not appear in library name: Macintosh HD/Users/sakkisetty/Documents/dll/FasExtend.dll .不幸的是,这也不起作用。

           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.pathSystem.loadLibrary 不采用绝对路径 - 所以总而言之,这种方式也行不通,至少我是如何尝试的。

最佳答案

我通过 MAVEN_OPTS 获得了 mvn tomcat:run 来处理 opencv_java249.so 文件。

简单地做:

MAVEN_OPTS=-Djava.library.path=/path/to/your/native/libfolder

工作正常。我在我的机器上为此使用了绝对路径并且它正在工作。我还没有尝试过亲戚。

关于java - 为tomcat设置java.library.path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24037409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com