Java 在运行时向Eclipse插件类路径添加JAR
我目前正在编写一个Eclipse插件,它依赖于外部的第三方JAR。当我在插件的Java 在运行时向Eclipse插件类路径添加JAR,java,eclipse,eclipse-plugin,osgi,classloader,Java,Eclipse,Eclipse Plugin,Osgi,Classloader,我目前正在编写一个Eclipse插件,它依赖于外部的第三方JAR。当我在插件的运行时选项卡中配置所有依赖项时,一切正常 但是,我使用的库可能因安装而异(而且它们本身不是插件),因此我需要一种在运行时(或Eclipse启动)配置插件类路径的方法 我尝试使用URLClassLoader加载我需要的类,结果很好。但是,第三方库本身也有依赖项,并且不使用myURLClassLoader,而是使用默认类加载器(在Eclipse中,默认类加载器是org.Eclipse.osgi.internal.base
运行时选项卡中配置所有依赖项时,一切正常
但是,我使用的库可能因安装而异(而且它们本身不是插件),因此我需要一种在运行时(或Eclipse启动)配置插件类路径的方法
我尝试使用URLClassLoader
加载我需要的类,结果很好。但是,第三方库本身也有依赖项,并且不使用myURLClassLoader
,而是使用默认类加载器(在Eclipse中,默认类加载器是org.Eclipse.osgi.internal.baseAdapter.DefaultClassLoader
)。设置线程.currentThread().setContextClassLoader()
没有帮助
我最后一次绝望的尝试是通过反射更改为SystemClassLoader
(根据,但这似乎对Eclipse插件没有任何影响)
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的内容都将自动添加到类路径中吗?谢谢您的帮助!help@greg-我有相同的要求解释了西方,但你建议的链接不能解决他们。有其他想法吗?