为什么在Java中这么难做到这一点?如果您想拥有任何类型的模块系统,您需要能够动态加载JAR文件。有人告诉我,有一种方法可以通过编写自己的类加载器来实现这一点,但这需要做大量的工作,至少在我看来,这应该像使用JAR文件作为参数调用方法一样简单
对实现这一点的简单代码有什么建议吗
这很难的原因是安全。类加载器是不可变的;您不应该在运行时随意向它添加类。事实上,我非常惊讶它能与系统类加载器一起工作。下面是制作自己的子类加载器的方法:
URLClassLoader子级=新的URLClassLoader(
新URL[]{myJar.toURI().toURL()},
this.getClass().getClassLoader()
);
Class classToLoad=Class.forName(“com.MyClass”,true,child);
方法Method=classToLoad.getDeclaredMethod(“myMethod”);
对象实例=classToLoad.newInstance();
Object result=method.invoke(实例);
很痛苦,但就是这样