2012-06-23 91 views
8

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

请注意,我试图避免引入另一个maven项目来编译这个bean,因为这个bean在逻辑上属于同一个项目。另外,我不能在Scala中重写这个bean,因为它后来在GWT项目中使用。

谢谢

回答

9

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

  1. Scala先走了,因为Java对Scala一无所知。
    1. Scalac解析Java文件并学习可见元素。
    2. Scalac读取Scala文件并生成类文件。
  2. Java变得最后,读取Java文件加上由Scala生成的类文件。

显而易见的问题是Scala并不知道Lombok注释的任何内容,所以它无法弄清楚它生成的元素。

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

否则,我想你需要分解它。

+0

谢谢丹尼尔。大多数依赖从Java到Scala。到目前为止,只有这些类型的bean创建了逆向依赖。 – Eduardo

+0

龙目岛开发人员在这里: 你也许知道_how_scala解析java文件? ECJ? javac的?手动解析器?我也怀疑这个过程是否支持注释处理器。如果是的话,我们可能会做些事情。 – rzwitserloot

+0

@rzwitserloot [Handrolled parser](https://github.com/scala/scala/tree/master/src/compiler/scala/tools/nsc/javac)(这应该是令人惊讶的 - 他的工作成为了从JDK 1.3开始的javac)。它不支持注释处理器。 –