簡體   English   中英

IntelliJ IDEA 和 Gradle - 不能應用於“(groovy.lang.Closure)”

[英]IntelliJ IDEA and Gradle - Cannot be applied to '(groovy.lang.Closure)'

我有一個 Gradle 文件,每當我在 IntelliJ IDEA 14.1.5 中打開它時,都會顯示整個文件的 IDE 錯誤。 即所有錯誤似乎都是:

java.lang.String 錯誤

java.lang.String 錯誤

或者

groovy.lang.Closure 錯誤

groovy.lang.Closure 錯誤

我試過清除文件的內容,只寫第一行:

group 'com.me.blah'

但即使這樣也會導致錯誤。

就上下文而言 - 這是更大的 SpringBoot 項目中的一個單獨模塊。 這個模塊是一組簡單的靜態文件(帶有用於 CSS 編譯、靜態分析等的 Gradle),而其余的是 Java 模塊,並且沒有Gradle 問題。

誰能想到為什么 IntelliJ 會努力理解這個 Gradle 文件?

我經常注意到這一點。 創建新項目並使用“Gradle”模板時,IntelliJ 似乎完全搞錯了。 所以我采取的做法是在創建一個新項目后,刪除 .idea 和 .iml 文件,然后直接從 Gradle 文件重新打開該項目。 IntelliJ 似乎更好地理解在這種情況下發生了什么。

對於問題的第一部分: group是一個屬性,因此必須有賦值,而不是函數調用。 正確的代碼是:

group = 'com.me.blah'

我在 IDEA 錯誤跟蹤器 ( IDEA-142683 ) 中找到了這個建議:

解決方法:
可以添加評論,例如
//noinspection GroovyAssignabilityCheck
抑制警告,但這應該不是必需的,因為這些是 Gradle 每天的標准用法。

此問題最近已更新,並標記為已修復,准備與 2016.2 版一起發布。

嘗試文件 | 使緩存無效並重新啟動。 在我弄亂文件中其他地方的語法之后,它對我有用。

對於任何尋求類似修復的人來說,這歸結為模塊的類型。 我的模塊在我的 .iml 文件中定義為

type="WEB_MODULE"

我創建了一個新的 Gradle 模塊並粘貼了相同的內容,刪除了原來的模塊,將新模塊重命名為與舊模塊同名,一切正常。 當我比較結果時,唯一的變化是 .iml 文件現在說:

type="JAVA_MODULE"

答案似乎是這樣的。 將您的模塊從“web”更改為“java”。

我發現這個警告來自於對 Intelliji 的 Groovy 檢查。 因此,如果您的項目不是純 groovy,您可以通過轉到文件 -> 設置 -> 編輯器 -> 檢查 -> 禁用 Groovy 來禁用此檢查。 同樣,這只是一種解決方法。

對我來說,在嘗試了所有這些答案而沒有結果后,更改項目的 Java SDK 成功了,我在 1.8 上並將其更改為最新版本,但仍然是 8 的項目級語言。

希望這可以幫助!

最近在windows上發生在我身上。 我嘗試了上述所有方法,但沒有奏效。

我做了什么:

1 - 我已經設置了 JAVA_HOME 環境變量。 所以 IDEA 選擇了它作為項目 SDK 並且出現了這些警告。

2 - 所以,我從項目 SDK 中刪除了默認的 JAVA_HOME 並手動添加了 jdk 路徑。 重新啟動,所有警告都消失了。

也許它會幫助某人。 謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM