【发布时间】:2014-03-21 04:25:25
【问题描述】:
您好,我正在创建一个插件,它需要动态加载 jar 并访问这些 jar 的类和方法。我尝试使用 URLClassLoader 并且能够加载如下所示的类
URL myJarFile = new URL("jar","","file:"+jarPath);
URLClassLoader sysLoader =(URLClassLoader)ClassLoader.getSystemClassLoader();
Class sysClass = URLClassLoader.class;
Method sysMethod = sysClass.getDeclaredMethod("addURL", new Class[]{URL.class});
sysMethod.setAccessible(true);
sysMethod.invoke(sysLoader, new Object[]{myJarFile});
但是这样做的问题是我们必须通过单独指定它们的名称来将类加载到 classLoader 中。 我想要的是从类路径中的所有 jar 中加载所有类并随时访问它们。
是否可以使用 URLClassLoader?如果不是,其他选择是什么? OSGI 对实现这一目标有多大帮助?
提前致谢!
【问题讨论】:
-
“我想要的是从类路径中的所有 jar 中加载所有类并随时访问它们。”为什么???如果不了解您的动机,您的问题将无法回答。如果您正在尝试构建一个能够添加插件的可扩展应用程序,那么您应该绝对使用 OSGi。
标签: java eclipse-plugin osgi urlclassloader