繁体   English   中英

加载具有外部依赖关系的外部类-URLClassLoader ClassNotFoundException

[英]Loading external Classes with external dependencies - URLClassLoader ClassNotFoundException

我正在通过external.JAR文件并通过URLClassLoader加载类,只要外部类不引用另一个JAR,该类就可以工作。 如果我这样做,将产生ClassNotFoundException。

作为解决方法,我将其他第二层JAR添加为依赖项,但我想在运行时动态加载它们。

问题:如何加载引用其他外部类的外部类? 或如何以正确的顺序加载外部JAR文件和类,以免出现异常?

我应该捕获异常,然后“首先”加载尚未加载的类吗?

您实际上可以使用子一流的加载器加载它们。 该主jar及其所有依赖项将属于该类加载器,并且可以在需要时被引用和丢弃。

主类加载器-> ChildFirstClassLoader->加载jar和从属jar

这是一个很好的例子

这是另一个类似的参考

半示例

File file = new File("c:\\free-universe-games-llc\\app.jar");
URL url = file.toURI().toURL();
ChildFirstClassLoader urlClassLoader = new ChildFirstClassLoader(new URL[]{url}, SomeClassLoader.class.getClassLoader()); 
Class<?> aClass = urlClassLoader.loadClass("com.freeuniversegames.app.App.class");
Object o = aClass.newInstance();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM