工作中有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