运行时如何动态加载JAR?

问题:

为什么在Java中这么难?如果您想要有任何类型的模块系统,您需要能够动态加载jar。我被告知有一种方式可以通过编写自己的ClassLoader来实现,但是对于某些应该(在我看来至少)的东西,像调用一个jar文件作为参数的方法一样简单。
任何关于这样做的简单代码的建议?

回答:

其原因很难是安全。类加载器是不可变的;您不应该在运行时无法向其添加类。我真的很惊讶,与系统类加载器一起工作。以下是如何使您自己的孩子类加载器:

URLClassLoader child = new URLClassLoader (myJar.toURL(), this.getClass().getClassLoader());
Class classToLoad = Class.forName ("com.MyClass", true, child);
Method method = classToLoad.getDeclaredMethod ("myMethod");
Object instance = classToLoad.newInstance ();
Object result = method.invoke (instance);

痛苦,但它是。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How should I load Jars dynamically at runtime?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

96 − 91 =