在运行时期间将JAR添加到Eclipse插件类路径

时间:2015-01-25 12:22:58

标签: java eclipse eclipse-plugin osgi classloader

我目前正在编写一个Eclipse Plug-In依赖于外部第三方JAR。当我在插件的Runtime选项卡中配置所有依赖项时,一切正常。

enter image description here

但是,我使用的库可能因安装而异(并且本身没有插件),因此我需要一种方法来在运行时(或Eclipse启动)中配置插件的类路径。

我尝试使用URLClassLoader加载我需要的类,但效果很好。但是,第三方库本身也具有依赖性,并且不使用我的URLClassLoader,而是使用默认的类加载器(在Eclipse中,它是org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader)。设置Thread.currentThread().setContextClassLoader()没有帮助。

我的最后和绝望的尝试是通过反思改为SystemClassLoader(根据this StackOverflow question,但这似乎对Eclipse Plug-In没有任何影响。

URLClassLoader classLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
Class clazz= URLClassLoader.class;

// Use reflection
Method method= clazz.getDeclaredMethod("addURL", new Class[] { URL.class });
method.setAccessible(true);
method.invoke(classLoader, new Object[] { url });

有没有人知道如何在插件执行期间将JAR添加到类路径中,或者可能定义一个文件夹,所有包含JAR的内容都会自动添加到类路径中?谢谢你的帮助!

0 个答案:

没有答案