【问题标题】:Error compiling Java/Scala mixed project and Lombok编译 Java/Scala 混合项目和 Lombok 时出错
【发布时间】:2012-06-25 15:55:26
【问题描述】:

我正在尝试编译一个 Maven Java/Scala 混合项目,该项目具有一个依赖于带有 lombok 注释的 Java bean 的 Scala 类。我尝试将 lombok jar 文件添加到 Scala 编译器的引导类路径以及 lombok 代理,但编译器仍然无法找到生成的 getter。 Scala 编译器有没有办法识别 lombok 注释?如果没有,什么是好的解决方法?

请注意,我试图避免引入另一个 maven 项目只是为了首先编译这个 bean,因为 bean 在逻辑上属于同一个项目。此外,我无法在 Scala 中重写 bean,因为它稍后会在 GWT 项目中使用。

谢谢,

【问题讨论】:

    标签: java scala maven lombok


    【解决方案1】:

    我认为你将无法避免它。正常的 Scala/Java 集成是这样工作的:

    1. Scala 先行,因为 Java 对 Scala 一无所知。
      1. Scalac 解析 Java 文件并了解可见元素。
      2. Scalac 读取 Scala 文件并生成类文件。
    2. Java 排在最后,读取 Java 文件和 Scala 生成的类文件。

    明显的问题是 Scala 对 Lombok 注释一无所知,因此无法弄清楚它生成的元素。

    如果 Java 对 Scala 没有任何依赖关系,则可以简单地颠倒顺序:让 Java 先走,让 Scala 在其类路径中包含 javac 的输出类文件。

    否则,我想您需要将其拆分。

    【讨论】:

    • 谢谢丹尼尔。大多数依赖项从 Java 到 Scala。到目前为止,只有这些 bean 会创建反向依赖。
    • Lombok 开发者在这里:你也许知道如何 scala 解析java 文件? ecj?爪哇?手动解析器?我还想知道这个过程是否完全支持注释处理器。如果是,我们也许可以做点什么。
    • @rzwitserloot Handrolled parser(这应该令人惊讶——他的工作成为从 JDK 1.3 开始的 javac 的基础)。它不支持注释处理器。
    • 谢谢大家。这澄清了它。
    猜你喜欢
    • 1970-01-01
    • 2021-10-25
    • 2014-08-18
    • 2012-08-24
    • 2011-12-08
    • 2011-05-25
    • 2016-02-23
    • 2014-01-01
    • 2016-06-21
    相关资源
    最近更新 更多