2017-09-05 69 views
0

這發生在Eclipse中具有kotlin特性的Java和maven項目中。在Kotlin + Java項目中的Eclipse中編譯時出錯,但項目使用Maven編譯

在這部分代碼:

val faces = figure.getFaces()  
    for (polygon in faces) { 
     //... 

我得到以下Eclipse中的錯誤,其中faces,在上面的第二行,被標有紅色下劃線:

Cannot access class 'Polygon'. Check your module classpath for missing or conflicting dependencies 

該項目Java和Kotlin的混合體。 figure對象是Java類的一個實例,而faces是一組類型Polygon,它是在純Kotlin的不同項目中(即Polygon是Kotlin類型,位於單獨的Kotlin項目中)。

這個Kotlin項目其中Polygon是,的確是在類路徑中作爲Maven依賴項,實際上由其中figure是其中一個實例使用的Java類。

我認爲問題出在Eclipse上,因爲我可以用maven成功構建項目。它看起來像是在eclipse中的錯誤或配置問題。

我知道把Java和Kotlin混合起來很奇怪。我只是用Java開始這個項目,然後決定逐漸將它轉換爲Kotlin。到目前爲止,我還沒有遇到很多問題,但我知道,Eclipse中的Kotlin工具和支持還不成熟。

+0

您使用的是最新版本的Kotlin嗎? Eclipse是否喜歡它,如果你使用PolygonKt而不是Polygon?如果這是問題,那麼您需要更新您的Eclipse配置,以便它使用新版本的Kotlin進行語法檢查/ intelliensing。 –

+0

eclipse的Kotlin插件尚未在幾個月內更新。也許咬一口,並轉換爲IntelliJ這個項目。 – Strelok

+0

你可以從你的項目的主目錄開始發佈'Polygen'類的完整路徑嗎? – guenhter

回答

0

沒有什麼合適的解決方案:我將我的Figure類轉換爲Kotlin,問題消失了,但我可以這樣做,因爲我完全控制了我的項目。

可能較新版本的eclipse插件不會產生此錯誤,或者如註釋中所示,切換到IntelliJ IDEA是另一種選擇。