直到java9,所有人都使用以下方式在运行时以编程方式将外部jar添加到类路径中:
URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader();
Method method = URLClassLoader.class.getDeclaredMethod("addURL", new Class[]{URL.class});
method.invoke(sysloader, new Object[]{file.toURI().toURL()});
现在使用Java9出现了问题:
线程"main"中的异常java.lang.ClassCastException: java.base/jdk.internal.loader.ClassLoaders$AppClassLoader 无法转换为java.base/java.net.URLClassLoader
URLClassLoader
在Java 9中不再起作用。如何在jdk9下编程运行时将外部jar添加到类路径中?
ClassLoader.getSystemClassLoader()
不再是一个URLClassLoader
,但如果需要,您可以随时创建一个新的URLClassLoader
实例。 - ZhekaKozlov