现在,我正在尝试创建一个依赖于其他jar的Eclipse插件;因此,我在jar上创建了一个插件库,并将其部署在我的Eclipses插件下。当我通过Eclipse从我的工作环境中启动它时,它运行良好。但是,只要我将它导出到一个jar并已部署到Eclipse中,它就不再起作用,因为它无法找到依赖的jar。发生了什么以及如何解决这个问题?有谁知道吗?请救救我。
答案 0 :(得分:2)
MANIFEST.MF有一个名为“Dependencies”的标签,其中应该放置当前插件所依赖的插件。 在运行时,您必须将“依赖项”插件放在与您要启动或想要使用的文件夹相同的文件夹中。
当一个插件有它应该使用的jar时,你必须将jar放到“Runtime”类路径条目中,你应该将jar添加到“Build”Binary Build条目。
答案 1 :(得分:1)
此外,与“外部jar”插件关联的plugin.xml是否export the right packages?
您是否检查过 this article ,其中描述了将第三方广告罐打包为插件所需的所有步骤?
文章 PDE and 3rdParty Bundles in OSGI Enterprise apps 中描述了其他非常重要的要点,例如:
始终将相关JAR文件放在单独的包中,并在Manifest文件中描述依赖项。不要将这些JAR隐藏在您自己的包中。
如果可能,请使用Import-Package解决依赖关系。
仅导出您的“公开”套餐 - 无内部套餐。
仅使用Require-Bundle来解析您自己的“Universe”中的依赖关系,而不是针对常见的bundle。
始终版本为Require-Bundle,Import-Package und Export-Package Require-Bundle 始终依赖于具有特定名称的捆绑包 Import-Package 不依赖于捆绑包的名称,因此更灵活。当然,与使用Require-Bundle
如果bundle本身包含bundle中的包并导出它们,那么永远不要将这些包作为导入的包放入Manifest。
在将插件部署为插件之前,请确保重新计算Package-Uses。错误的包 - 导出包的使用条目可以阻止PDE导出您的插件。
答案 2 :(得分:0)
Eclipse外的工作行为是正常的,因为依赖jar在项目的类路径中。
您是否看过部署的插件文件夹?我怀疑,依赖项不包含在插件文件夹中。
答案 3 :(得分:0)
我遇到了类似的问题。我使用插件视图修复了它:
注意我正在使用Eclipse 3.3,因此您的milage可能会有所不同。