在我之前的问题中,我询问了如何加载远程 jar 文件。我目前的代码是这样的:
//f is the path to the jar
URLClassLoader loader = new URLClassLoader(new URL[]{f.toURI().toURL()});
Class<?> jarClass = Class.forName(main, true, loader);
Class<? extends Module> module = jarClass.asSubclass(Module.class);
Constructor<? extends Module> constructor = module.getConstructor();
System.out.println(constructor);
Module module = constructor.newInstance();
这很好用,但是远程加载的模块扩展了正在加载它们的 jar 中的一个类,这会产生此错误:
引起:java.lang.ClassNotFoundException: package.whatever.Module,我认为是因为它使用 URLClassLoader 而不是 getClass().getClassLoader() .. 我怎样才能让它使用 URLClassLoader 然后回退到默认值?
谢谢,
巴特