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

导出依赖于外部jar的Eclipse插件,eclipse,plugins,jar,dependencies,export,Eclipse,Plugins,Jar,Dependencies,Export,最近刚开始使用Eclipse,在导出我正在使用的插件时遇到了一个问题。我试图寻找,但到目前为止没有运气-但如果答案已经在这里,如果有人能告诉我,我将不胜感激 我正在用Eclipse编写一个n OSGi/Equinox插件。该插件用于第三方系统,允许扩展:基本上,所有放置在应用程序插件文件夹中的jar都会在启动时自动加载到应用程序中。我已经设法把我的插件,它的加载良好,它的工作。 问题是我依赖于另一个插件,它放在我的插件文件夹旁边。出于显而易见的原因,我不想将该插件打包到我的插件jar文件中。我曾

最近刚开始使用Eclipse,在导出我正在使用的插件时遇到了一个问题。我试图寻找,但到目前为止没有运气-但如果答案已经在这里,如果有人能告诉我,我将不胜感激

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

那么:我如何设置我的插件项目依赖关系,即a)外部依赖关系和b)不需要指定路径或变量-例如,我如何告诉我的导出程序“别担心,它就在你身边”


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

如果您在插件清单中将另一个插件作为依赖项引用。MF导出应该不会出错。插件应列在MANIFEST.MF中的
Require Bundle
列表中

您可以在MANIFEST.MF编辑器中通过添加到编辑器“依赖项”选项卡上的“必需插件”列表来完成此操作

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

如果要使用的jar不是Eclipse插件,则必须将其作为插件的一部分包括在内,并在MANIFEST.MF的
包类路径中列出jar。如果您无法做到这一点,您可以在
包类路径中引用外部jar,方法如下:

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

是插件代码的正常输入项
external:$LIB\u LOCATION$/LIB.jar
在环境变量
LIB\u LOCATION
定义的位置中查找
LIB.jar
。此方法可能很难正确使用。

如果在插件清单中将其他插件作为依赖项引用。MF导出应该可以正常工作。插件应列在MANIFEST.MF中的
Require Bundle
列表中

您可以在MANIFEST.MF编辑器中通过添加到编辑器“依赖项”选项卡上的“必需插件”列表来完成此操作

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

如果要使用的jar不是Eclipse插件,则必须将其作为插件的一部分包括在内,并在MANIFEST.MF的
包类路径中列出jar。如果您无法做到这一点,您可以在
包类路径中引用外部jar,方法如下:

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

是插件代码的正常输入项
external:$LIB\u LOCATION$/LIB.jar
在环境变量
LIB\u LOCATION
定义的位置中查找
LIB.jar
。这个方法可能很难正确使用。

最终,我的特定问题的解决方案是在build properties选项卡上添加外部jar文件作为额外的类路径条目(这将转换为build.properties文件中的“jars.Extra.Classpath=.jar”条目)。我还将jar文件添加到了项目本身——在添加了额外的类路径条目(该条目已自动更改为外部依赖项)之后


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

最后,我的具体问题的解决方案是在“构建属性”选项卡上添加外部jar文件作为额外的类路径条目(这转化为“jars.extra.classpath=.jar”条目),我还将jar文件添加到了项目本身——在添加了额外的类路径条目之后,该条目被自动更改为外部依赖项


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

不幸的是,所需插件列表似乎只接受插件类型jar,而我的外部jar是一个普通jar文件,其中包含一些类(见上面我的编辑).还有什么建议吗?我已经尝试了你的建议。我必须添加额外的jar作为外部jar依赖项,至少要使其能够生成。然后我按照建议将外部:.jar添加到Bundle类路径中,但不幸的是导出仍然失败。错误为://.jar=src不存在!不幸的是,在ly接受插件类型的jar——而我的外部jar是一个普通的jar文件,其中包含一些类(参见上面的编辑).还有什么建议吗?我已经尝试了你的建议。我必须将我的额外jar添加为外部jar依赖项,至少可以使其生成。然后我按照建议将外部:.jar添加到捆绑包类路径,但不幸的是,导出仍然失败。错误为://.jar=src不存在!