java如何在运行时动态加载JAR文件?

java如何在运行时动态加载JAR文件?,第1张

java如何在运行时动态加载JAR文件?

很难的原因是安全性。类加载器是不可变的。您不应在运行时随意向其添加类。实际上,我很惊讶能与系统类加载器一起使用。这是制作自己的子类加载器的方法:

URLClassLoader child = new URLClassLoader(        new URL[] {myJar.toURI().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);

以下解决方案有些骇人,因为它使用反射来绕过封装,但是可以完美地工作:

File file = ...URL url = file.toURI().toURL();URLClassLoader classLoader = (URLClassLoader)ClassLoader.getSystemClassLoader();Method method = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);method.setAccessible(true);method.invoke(classLoader, url);


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4897915.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存