Добавить каталог в classpath во время выполнения в Java 9
Я использую OpenOffice API и одно из требований для предотвращения исключения java.lang.UnsatisfiedLinkError: com.sun.star.lib.connections.pipe.PipeConnection.createJNI
это добавить путь к каталогу OpenOffice к classpath. Этот код ниже используется для работы в версиях <= Java 8, но он перестал работать на Java 9.
try {
String path = "C:/Program Files (x86)/OpenOffice 4/program/";
File f = new File(path);
URL u = f.toURI().toURL();
URLClassLoader urlClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
Class<URLClassLoader> urlClass = URLClassLoader.class;
Method method = urlClass.getDeclaredMethod("addURL", new Class[]{URL.class});
method.setAccessible(true);
method.invoke(urlClassLoader, new Object[]{u});
} catch(Exception e) {
Utils.logger.error(e.getMessage(), e);
}
Но теперь это бросок: java.lang.ClassCastException: java.base/jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to java.base/java.net.URLClassLoader
, Я посмотрел на этот ответ, но он не применим к моему сценарию, потому что я добавляю каталог в classpath, а не в jar.
Как я могу это исправить?