我正在使用 OpenOffice API,防止异常的要求之一java.lang.UnsatisfiedLinkError: com.sun.star.lib.connections.pipe.PipeConnection.createJNI
是将 OpenOffice 的目录路径添加到类路径。下面的代码曾经在 <= 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
. 我已经查看了这个答案,但它不适用于我的场景,因为我正在将目录添加到类路径,而不是 jar。
我该如何解决?