在Java 9

时间:2018-01-31 18:20:31

标签: java classloader java-9 uno openoffice-api

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

我该如何解决?

0 个答案:

没有答案