Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在运行时向Eclipse插件类路径添加JAR_Java_Eclipse_Eclipse Plugin_Osgi_Classloader - Fatal编程技术网

Java 在运行时向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插件,它依赖于外部的第三方JAR。当我在插件的
运行时
选项卡中配置所有依赖项时,一切正常

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

我尝试使用
URLClassLoader
加载我需要的类,结果很好。但是,第三方库本身也有依赖项,并且不使用my
URLClassLoader
,而是使用默认类加载器(在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-我有相同的要求解释了西方,但你建议的链接不能解决他们。有其他想法吗?