4

我正在使用 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。

我该如何解决?

4

0 回答 0