将类路径容器添加到Eclipse插件的运行时

时间:2016-02-07 14:45:41

标签: java eclipse eclipse-plugin osgi-bundle eclipse-pde

我们使用类路径容器(由Buildship提供)来管理Eclipse插件项目中的非插件依赖项:

enter image description here

这非常有效,项目按预期编译。

但是,如果我们使用“Eclipse Application”运行配置启动项目,我们会收到类似

的错误
java.lang.NoClassDefFoundError: org/apache/commons/collections4/multiset/HashMultiSet
一旦我们的插件被激活,

显然,Eclipse使用类路径容器来编译项目,但不会在运行时添加

我已经在互联网上搜索了很长一段时间才找到解决方案,买我没有:

如何告诉Eclipse将类路径容器添加到项目的运行时类路径?

我没有找到任何选项。 我知道我可以将依赖项的jar添加到MANIFEST.MF中的类路径中,但我不愿意这样做。这个完全与classpath容器的想法相矛盾。相反,我希望Eclipse自动将类路径容器中的所有jar添加到运行时类路径中。

2 个答案:

答案 0 :(得分:1)

您无法执行此操作,插件所依赖的所有内容都必须列在“需要捆绑包”中的MANIFEST.MF或“导入包”中。 ;或者' Bundle-Classpath'。

导出插件时,没有关于插件中包含的项目类路径的信息。

答案 1 :(得分:0)

我找到了一个适合我们的解决方案:

开发

在开发期间,我们通过将依赖项jar添加到bootclasspath来加载它们。对于“Eclipse Application”运行配置,我们可以将以下内容添加到配置的JVM参数中:

 -Xbootclasspath/a:"${project_classpath:Project1}:${project_classpath:Project2}"

这很方便,因为它会将所有类路径包含器添加到运行时。所以我们可以通过gradle和classpath容器进行真正的依赖管理。

生产

对于生产,我们将依赖项包装为Osgi包,并自动将它们添加到MANIFEST.MF。我们正在使用gradle来构建我们的项目,所以这应该不是问题。