【问题标题】:Eclipse PDE: Package does not exist in this plug-inEclipse PDE:此插件中不存在包
【发布时间】:2010-10-25 13:31:31
【问题描述】:

我们正在开发一个 Eclipse 插件,该插件被拆分为多个 Eclipse 项目。我们想要导出在这些外部项目中定义的一些类(通过 MANIFEST.MF 中的 Export-Package)。问题是 Eclipse 给出错误“此插件中不存在包 xxx”。

举个例子,让我们假设插件是项目 P1,而这个插件使用了在单独的 Eclipse 项目 P2 中定义的一些类。我们希望将 P2 与 P1 捆绑在一起,并通过 P1 的 MANIFEST.MF 导出 P2 的一些类。

如果我生成一个 jar 文件 (P2.jar) 并将其添加到 P1 的构建路径中,这将起作用,但是如果我只是将 P2 添加为 P1 的依赖项,则它不起作用。

任何建议“此插件中不存在Package xxx”的原因是什么?

有什么建议可以去掉吗?

【问题讨论】:

    标签: eclipse eclipse-plugin


    【解决方案1】:

    添加项目 P2 作为 P2 的依赖项只需将 P2 的构建类(假设 P2 是 Java 项目)添加到 P1 的类路径中。这将允许 P1 进行编译,但会导致运行时出现错误行为。

    因为您的项目 P1 是一个插件项目,所以它的所有依赖项都必须通过清单编辑器的依赖项选项卡或通过您提到的包含的 jar 文件添加。

    所以唯一的解决方案是将P2项目转换为插件项目,然后让你的P1插件依赖它。这种只导出代码但不向 ide 贡献任何东西的插件通常被称为库插件。现在越来越多的 java 库也以这种方式交付,让客户在 Eclipse 上下文中使用它们(例如 log4j)。

    【讨论】:

    • 感谢您的回答。但是,我不明白为什么将 P2 类添加到 P1 的类中会导致运行时的错误行为。目前在我们的构建过程中(我们使用 MAVEN),P2 是 P1 的 MAVEN 依赖项。 MAVEN 所做的是生成 P2 的 JAR 并将其与 P1 的类捆绑在一起。这在运行时运行良好,但是在 Eclipse 中调试 P1 非常困难(您需要在 P2 中每次编辑后执行 mvn deploy)。
    • 如果 P2 类捆绑在一个 Jar 文件中,该文件通过 Manifest 编辑器运行时的选项卡添加到 P1 类路径,则没有问题。问题是关于在 P1 依赖项中手动添加 P2 项目,方法是右键单击项目然后属性 -> Java 构建路径 -> 项目。您可以检查 P1 的 Manifest Runtime 选项卡并检查 p2.jar 是否存在?跨度>
    • 我手动生成的 MANIFEST,它在 Bundle-ClassPath 中包含 p2.jar
    • 当我们使用 m2eclipse(Eclipse 的 MAVEN 插件),并且 P2 是 P1 的 maven 依赖项时,我在 Properties -> Java Build Path -> Libraries 中有 P2 项目。这里 m2eclipse 创建了一个特殊项,它放置了项目的所有 maven 依赖项。使用此配置,我收到“此插件中不存在包 xxx”错误。为了解决这个问题,我必须手动将 P2.jar 添加到 Properties -> Java Build Path -> Libraries 中以消除此错误。
    • 我不知道 MAVEN。我可以确认的是以下内容:“为了让 P1 能够看到 P2 类,必须在 p1 中添加一个 p2.jar 文件,然后将其包含到 P1 清单运行时选项卡和 p1 清单构建选项卡中” .我不知道您是否必须这样做,或者 MAVEN 是否能够为您做到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 2012-09-17
    • 2018-10-17
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多