工作中有java和scala和混合编译的工程,最近遇到一个问题,就是工程中有依赖java bean的scala文件,编译过程中发现编译器无法找到Java bean 中 lombok生成的getter,
网上找了一下,import scala.collections.JavaConvertions._的方法是没用的。
最后终于找到一个跟我有一样问题的哥们,里面的最佳答案表示这个问题无法解决,
最佳答案:
我认为您将无法避免。正常的Scala / Java集成的工作方式如下:
Scala首先出现,因为Java对Scala一无所知。
Scalac解析Java文件并了解可见元素。
Scalac读取Scala文件并生成类文件。
Java排在最后,读取Java文件以及Scala生成的类文件。
显而易见的问题是,Scala对Lombok批注一无所知,因此无法弄清楚它生成的元素。
如果您没有从Java到Scala的任何依赖关系,则可以简单地颠倒顺序:让Java首先运行,让Scala在其classpath上包含javac的输出类文件。
否则,我想您需要将其分解。
好吧,那就姑且认为无法解决了,但是他所说的原因我仍保持怀疑,按我的经验,java&scala混合编译下,java代码应该是先编译的,甚至我们经常需要使用
mvn clean scala:compile compile package
这样的命令来达到scala先编译的效果,而不是他所说的scala goes first。
总之,暂时通过手动generate getter的方式就可以规避,反正用idea插件,生成getter/setter也不费事(笑)
stackoverflow上的原文见 https://stackoverflow.com/questions/11171631/error-compiling-java-scala-mixed-project-and-lombok