Java 正在加载具有外部依赖项的外部类-URLClassLoader ClassNotFoundException

Java 正在加载具有外部依赖项的外部类-URLClassLoader ClassNotFoundException,java,jar,urlclassloader,Java,Jar,Urlclassloader,我正在从external.JAR文件并通过URLClassLoader加载一个类,只要外部类不引用另一个JAR,URLClassLoader就可以工作。如果我这样做,就会产生ClassNotFoundException 作为一种解决方法,我添加了另一个第二层JAR作为依赖项,但我希望在运行时也动态加载这些JAR 问题:如何加载引用其他外部类的外部类?或者如何加载外部JAR文件和类 正确的顺序,所以我没有得到一个例外 我是否应该捕获异常,然后“首先”加载尚未加载的类?您实际上可以使用子类加载程序加

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

作为一种解决方法,我添加了另一个第二层JAR作为依赖项,但我希望在运行时也动态加载这些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();
File File=new文件(“c:\\free universe games llc\\app.jar”);
URL=file.toURI().toURL();
ChildFirstClassLoader urlClassLoader=新的ChildFirstClassLoader(新的URL[]{URL},SomeClassLoader.class.getClassLoader());
类aClass=urlClassLoader.loadClass(“com.freeuniversegames.app.app.Class”);
对象o=aClass.newInstance();