【问题标题】:Exporting an Eclipse plugin with a dependency on an external jar导出依赖于外部 jar 的 Eclipse 插件
【发布时间】:2016-10-20 15:42:28
【问题描述】:

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

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

所以:我如何设置我的插件项目依赖项,它是 a) 外部依赖项和 b) 不需要使用路径或变量指定 - 即我如何告诉我的导出器“不要”别担心,它就在你身边”?

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

【问题讨论】:

    标签: eclipse plugins jar dependencies export


    【解决方案1】:

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

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

    【讨论】:

      【解决方案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_LOCATION 定义的位置中查找 lib.jar。这种方法可能很难正确。

      【讨论】:

      • 不幸的是,Required Plug-ins 列表似乎只接受插件类型的 jar - 而我的外部 jar 是一个包含一些类的常规 jar 文件(请参阅上面的编辑)。还有什么建议吗?
      • 我已经尝试了你的建议。我必须至少将我的额外 jar 添加为外部 jar 依赖项才能构建它。然后我按照建议将 external:.jar 添加到 Bundle-Classpath 中,但不幸的是导出仍然失败。错误说://.jar = src 不存在!
      猜你喜欢
      • 2013-01-19
      • 2013-11-16
      • 1970-01-01
      • 2012-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 2018-03-10
      相关资源
      最近更新 更多