【问题标题】:Maven compiler cannot resolve importMaven 编译器无法解析导入
【发布时间】:2021-03-18 15:44:51
【问题描述】:

我正在尝试使用 maven 和 tycho 构建多个 eclipse 产品。我目前遇到一个问题,其中 Bundle A 依赖于 Bundle B 中的一个类。 Bundle B 的包结构类似于:

a.b.c.d.e.f.Class

当我现在尝试构建 A 时,我得到一个看起来有点像这样的编译错误:

 import a.b.c.d.e.f.MyClass;
[ERROR] ^^^^^^^^^
[ERROR] The import a.b.c.d.e cannot be resolved

如果您仔细观察,您会发现 Maven 显然试图解析错误的包,因为它只声明它无法解析 a.b.c.d.e,而要导入的类实际上在 a.b.c.d.e.f 中。

此外,a.b.c.d.e 中没有类。我已尝试将 a.b.c.d.e 作为清单中的导出包包括在内,并将其从该列表中删除,但都没有帮助。

这可能是什么问题?

【问题讨论】:

  • Maven 不解析 Java 包,Javac 可以。你有没有给你的pom.xml添加对应的依赖?
  • 是的,依赖添加到pom.xml。因为我也在使用 Tycho,所以我还在 MANIFEST.MF 中添加了 OSGI 包名称作为 Require-Bundle 条目。由于 Tycho 通过了依赖解析,我确定包含所需包的捆绑包位于类路径中。

标签: java maven build compilation tycho


【解决方案1】:

在使用非常详细的日志记录运行 maven 之后,我再次检查了参数,当编译 Bundle A 时,maven (tycho) 正在传递给 JDT 编译器。我注意到,它只是传递了一个我添加到 Bundle B 的类路径中的 JAR .

然后我注意到,在我指定 Bundle-Classpath 的 Bundle B 的清单中,类路径上只有 JAR。我之前认为默认情况下会添加捆绑包本身的类,但在将 ,. 添加到 Bundle-Classpath 属性后,构建再次工作。

如果您想了解更多相关信息,THIS POST 为我指明了正确的方向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-31
    • 2017-10-29
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多