以编程方式设置Djava.library.path(或替代方案)?

Jir*_*ire 6 java jvm

我期待以编程方式设置VM参数Djava.library.path.如果无法做到这一点,有哪些替代方案(如果有的话)?

Jir*_*ire 8

使用此方法可以轻松解决此问题:

public static void addLibraryPath(String pathToAdd) throws Exception {
    Field usrPathsField = ClassLoader.class.getDeclaredField("usr_paths");
    usrPathsField.setAccessible(true);

    String[] paths = (String[]) usrPathsField.get(null);

    for (String path : paths)
        if (path.equals(pathToAdd))
            return;

    String[] newPaths = Arrays.copyOf(paths, paths.length + 1);
    newPaths[newPaths.length - 1] = pathToAdd;
    usrPathsField.set(null, newPaths);
}
Run Code Online (Sandbox Code Playgroud)

  • 神圣..这实际上有效.谢谢! (4认同)
  • 这是一个很好的技巧,如果某些第 3 方库使用 System.loadLibrary(...),而您自己无法更改!泰! (2认同)

Con*_*nnr 4

看看这个java文档http://docs.oracle.com/javase/6/docs/api/java/lang/System.html#setProperty(java.lang.String , java.lang.String)

您想调用 setProperty(String, String) 方法。

所以在你的情况下它看起来像这样

System.setProperty("java.library.path","value_you_want");
Run Code Online (Sandbox Code Playgroud)

  • 看起来您对该系统属性的理解是正确的,因为它仅在启动时读取一次。http://fahdshariff.blogspot.jp/2011/08/changing-java-library-path-at-runtime.html (2认同)