2

现在,我正在尝试创建一个依赖于其他 jar 的 Eclipse 插件;因此,我在 jar 上创建了一个插件库,并将其部署在我的 Eclipse 插件文件夹下。当我通过 Eclipse 从我的工作环境启动它时,它运行良好。但是,一旦我将它导出到一个 jar 并部署到 Eclipse 中,它就不再工作了,因为它无法找到依赖的 jar。发生了什么以及如何解决问题?有人知道吗?请救救我。

4

4 回答 4

2

MANIFEST.MF 有一个名为“Dependencies”的选项卡,所有插件都应在其中放置当前插件所依赖的所有插件。在运行时,您必须将“依赖项”插件放在与您要启动或要使用的插件相同的文件夹中。

当一个插件有它应该使用的 jars 时,你必须将 jars 放到“Runtime”类路径条目中,并且应该将 jars 添加到“Build”Binary Build 条目中。

于 2008-12-02T07:11:57.920 回答
1

此外,与您的“外部 jar”插件关联的 plugin.xml 是否导出了正确的包

您是否查看过这篇描述将 3rd 方 jar 打包为插件所需的所有步骤的文章?

其他非常重要的点在 OSGI Enterprise 应用程序中的 PDE 和 3rdParty Bundles文章中进行了描述,其规则如下:

  • 始终将依赖的 JAR 文件放在单独的包中,并在清单文件中描述依赖关系。不要将这些 JAR 隐藏在您自己的包中。

  • 如果可能,请使用 Import-Package 来解决您的依赖关系。

  • 仅导出您的“公共”包 - 没有内部包。

  • 仅使用 Require-Bundle 来解决您自己的“宇宙”内的依赖关系,而不是针对常见的捆绑包。

  • 始终版本 Require-Bundle、Import-Package 和 Export-Package。
    Require-Bundle始终依赖于具有特定名称的包。
    Import-Package不依赖于包的名称,因此它更灵活。当然,与使用 Require-Bundle 的单行程序相比,查看您的包并决定需要导入或导出哪些包需要做更多的工作

  • 如果一个包本身包含包内的包并导出它们,切勿将这些包也作为导入包放入清单中。

  • 在将捆绑包部署为插件之前,请确保重新计算 Package-Uses。导出包的错误包使用条目可能会阻止 PDE 导出您的插件。

于 2008-12-02T07:14:13.920 回答
0

Eclipse 的工作行为是正常的,因为依赖的 jar 在项目的类路径中。

你看过你部署的插件文件夹吗?我怀疑插件文件夹中不包含依赖项。

于 2008-12-02T06:58:14.530 回答
0

我只是有一个类似的问题。我使用插件视图修复了它:

  1. 使用 Runtime 选项卡的 Classpath 部分添加 jar
  2. 使用概览选项卡中的组织清单向导进行所有必需的清单更改
  3. 使用概览选项卡中的导出向导导出完成的插件。

注意我使用的是 Eclipse 3.3,所以你的里程可能会有所不同。

于 2008-12-02T07:41:29.450 回答