2012-06-23 93 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)。它不支持註釋處理器。 –