导出一个依赖于外部jar的Eclipse插件

时间:2016-06-19 06:45:25

标签: eclipse plugins jar dependencies export

刚刚开始使用Eclipse并遇到导出我正在处理的插件的问题。我试图搜索,但到目前为止没有运气 - 但如果答案已经在这里,我会感激,如果有人能指出我。

我正在用Eclipse编写一个OSGi / Equinox插件。该插件适用于第三方系统,允许扩展:基本上所有放在应用程序插件文件夹中的jar都会在启动时自动加载到应用程序中。我已经设法将我的插件放在一起,它加载正常,它的工作原理。 问题是我依赖于另一个插件放在我的插件文件夹旁边。出于显而易见的原因,我不想将该插件打包到我的插件jar文件中。我试图将依赖项添加为外部存档,但这会破坏导出:当我尝试导出我的插件项目时,ant抱怨缺少依赖项和类型。 (如果我在插件中实际包含其他jar文件,一切正常,但显然这不太理想。)

所以:我如何设置我的插件项目依赖项,它是一个外部依赖项,b)不需要用路径或变量来指定 - 即我如何告诉我出口商不要担心,它会在你旁边"?

编辑:显然,我没有提到一个重要的细节。我依赖的外部jar文件是不是一个OSGi插件,只是一个普通的jar文件,里面有一些类。对于第三方系统,它看起来都是一样的(都在plugins文件夹下,都被加载到应用程序中),但是对于Eclipse来说,区别似乎很重要。

2 个答案:

答案 0 :(得分:2)

如果您在插件的MANIFEST.MF中引用其他插件作为依赖项,则导出应该可以正常运行。该插件应列在MANIFEST.MF中的Require-Bundle列表中。

您可以在MANIFEST.MF编辑器中添加到“必需的插件”中来执行此操作。关于'依赖关系'的列表编辑标签。

注意:引用其他插件时,必须始终使用此方法。不要尝试将插件jar添加到Java构建路径或类似的东西。

如果您要使用的jar不是Eclipse插件,则必须将其作为插件的一部分包含在内,并在MANIFEST.MF的Bundle-Classpath中列出jar。如果您不能这样做,您可以使用以下内容引用Bundle-Classpath中的外部jar:

Bundle-Classpath: .,external:$LIB_LOCATION$/lib.jar

.是插件代码的正常输入。 external:$LIB_LOCATION$/lib.jar在环境变量lib.jar定义的位置查找LIB_LOCATION。这种方法很难做到。

答案 1 :(得分:0)

最后,我的具体问题的解决方案是在构建属性选项卡上将外部jar文件添加为Extra Classpath条目(这转换为" jars.extra.classpath = .jar"条目在build.properties文件中)。我还将jar文件添加到项目本身 - 在添加了自动更改为外部依赖项的额外类路径条目之后。

通过这两项更改,我能够成功导出我的插件,该插件没有包含外部jar文件,但是在加载到第三方系统时能够引用它。