我想通过编程的方式设置虚拟机参数 Djava.library.path。如果无法完成,有什么替代方案(如果有的话)?
使用这种方法解决问题非常容易:
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);
}
System.setProperty("java.library.path","value_you_want");
java.library.path
是在使用System.loadLibrary(String libname)加载动态库时使用的。而System.load(String filename)则使用完整的文件名,不需要使用java.library.path
。