Могу ли я установить java.library.path программно из самого java-кода?
Следующее не работает.
System.setProperty("java.library.path", "/blah");
Я просто заключаю в кавычки из ссылки, предоставленной secmask ( https://cedarsoft.com/blog.html ), в случае, если ссылка идет мертвая:
Изменение системного свойства
java.library.path
позже doesn’t имеет любой эффект, так как свойство оценивается очень рано и кэшируется. Но парни в jdic обнаружили путь, как работать вокруг этого. Это - немного грязный †“, но эй, те взломы являются причиной, все мы любим Java.
System.setProperty("java.library.path", "/path/to/libs");
Field fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths");
fieldSysPath.setAccessible(true);
fieldSysPath.set(null, null);
Объяснение:
Сначала системное свойство обновляется с новым значением. Это могло бы быть относительным путем †“, или возможно Вы хотите создать тот путь динамично. Classloader имеет статическое поле (
sys_paths
), которое содержит пути. Если то поле установлено наnull
, оно инициализируется автоматически. Поэтому принуждение того поля кnull
закончится в переоценку пути к библиотеке, как толькоloadLibrary()
назван.