我正在使用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
。我查看了this answer,但它不适用于我的场景,因为我将目录添加到类路径,而不是jar。
我该如何解决?