【问题标题】:External build can't find import外部构建找不到导入
【发布时间】:2012-03-22 21:28:25
【问题描述】:

我正在开发一个基于 Eclipse 3.6 的 Eclipse RCP 项目,该项目分为 3 个 Java 项目。

从底部开始,gov.bop.rabid.xxx.ui 是 RCP 项目。其他两个 Java 项目都包含在 rabid RCP 项目中。

我已将这两个 Java 项目作为依赖项添加到我的 rabid 项目中。

当我在 Eclipse 中构建 RCP 产品时,一切都会构建并运行。

当我使用 Eclipse 产品导出向导时,我在 logs.zip 文件中收到以下错误消息:

# 1/13/12 9:02:45 AM EST
# Eclipse Compiler for Java(TM) 0.B61, 3.7.0, Copyright IBM Corp 2000, 2010. All rights reserved.
----------
1. ERROR in C:\BOPEclipse3.7RaBId\gov.bop.rabid.xxx.ui\src\gov\bop\rabid\xxx\ui\video\RabidVideo.java (at line 3)
    import gov.bop.eclipse.logging.EclipseLogging;
           ^^^^^^^^^^^^^^^
The import gov.bop.eclipse cannot be resolved

我知道这是某种依赖错误,但我无法在我的 RCP 项目中找到放置依赖的位置。

编辑添加:

这是 Rabid 产品依赖项列表的第一部分:

其他两个工作区插件包含在依赖项列表中。

这里是 Rabid 产品 Eclipse 运行配置插件列表的第一部分:

回答 Tonny Madsen 的问题(感谢您的兴趣):

  • gov.bop.eclipse 日志记录是来自现有 JAR 存档的 Eclipse 插件。
  • com.aware.photocomponent 是来自现有 JAR 存档的 Eclipse 插件。

这里又是包资源管理器,目录打开:

有 0 个错误和 0 个与此工作区相关的警告。

【问题讨论】:

  • 您写了“当我在 Eclipse 中构建 RCP 项目...”和“当我使用 Eclipse product 导出向导时.. ." - 你的意思是 projectproduct 吗?你能从 Eclipse 中启动产品吗?
  • @Tonny Madsen:是的,我可以从 Eclipse 内部启动产品。我解决了这个问题。
  • 你能看看gov.bop.eclipse.logging是否正确构建?如果是,你能在里面找到EclipseLogging吗?还有其他编译错误吗?我见过类似的问题,真正的问题出在家属身上……
  • @Tonny Madsen:我已更新问题以回答您的问题。感谢您的关注。
  • 感谢您的更新。显示的信息来自 IDE。正确的?您导出产品时是否检查过编译的gov.bop.eclipse.logging插件是否正确?几周前我遇到了一个与此非常相似的问题,问题是build.properties 的错误更改。我记得,我错误地添加了 src... 行...它在 IDE 中工作,但 exported 插件几乎是空的...导致错误非常类似于你的。

标签: java build-process eclipse-rcp


【解决方案1】:

你得到一个编译器错误,这意味着 OSGi 解析器对你的依赖设置很满意,否则你会在编译之前因为一个未解析的依赖而失败。

我怀疑这与项目中有 .class 文件二进制文件而不是源 .java 文件有关。尝试将gov.bop.eclipse.logging/build.properties 中的output.. 属性设置为包含带有.class 文件的包的文件夹的路径(相对于项目根目录)。

如果这些是插件项目,您可以通过右键单击 gov.bop.rabid.xxx.ui/META-INF/MANIFEST.MF 文件并选择 PDE 来仔细检查将在产品导出期间使用的类路径工具 -> 创建 Ant 构建文件。这将生成一个 build.xml 文件,您可以检查“@dot”目标以查看正在使用的类路径。

此类问题的其他一些原因(我并不真正认为这里是这种情况)是:

  • 清单中有不正确的Bundle-ClassPath 条目。如果未指定,则默认值为 '.',表示 .class 文件位于二进制包的根目录中。
  • 在您的包中包含嵌套的 jar,一个 jar 依赖于另一个,但未定义这些 jar 的编译顺序 (jars.compile.order)。

【讨论】:

  • 感谢您的建议。我确实发现日志插件的构建属性存在一些问题。不幸的是,修复构建属性并没有解决问题。我确实创建了 build.xml 文件并查看了 Eclipse 编译器失败的地方。不幸的是,手动操作 build.xml 文件只会导致点步骤之后的步骤被跳过。
【解决方案2】:

当我删除 gov.bop.eclipse.logging 插件项目并将 gov.bop.eclipse.logging jar 添加到 gov.bop.rabid.xxx 时,我终于能够构建 Eclipse RCP 包。 ui 类路径。

日志插件 jar 现在是 ui 插件 jar 的一部分。虽然这“有效”,但如果我想更新日志插件 jar,我必须更新 ui 插件 jar。这不是一个优雅的解决方案,而只是一个有效的解决方案。

看来这是在 Eclipse RCP 包中包含外部 Eclipse 插件的唯一方法。我希望有人能证明我错了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    相关资源
    最近更新 更多