[英]Kotlin unresolved reference in IntelliJ
您在項目中使用的 Intellij IDEA 插件和 Kotlin 運行時/編譯器需要匹配。 例如,如果 IDE 插件是 Beta 1,但您的 Gradle/Maven 項目使用 M12,您將遇到與您描述的完全一樣的問題。 因此,請檢查所有內容是否對齊。
如果您仍然有問題,對於一些較舊的插件,您需要清除 Intellij IDEA 中的緩存(文件菜單,清除緩存並重新啟動,選擇重新啟動選項)。
如果有人碰到這個蹣跚既不Invalidate Cache
或Update Kotlin's Version
工作:
1) 首先,確保您可以從 IDE 外部構建它。 如果您使用gradle
,例如:
gradle clean build
如果一切順利,那么您的環境就可以與Kotlin
一起工作了。
2) 要修復 IDE 構建,請嘗試以下操作:
項目結構 -> {選擇模塊} -> Kotlin -> FIX
正如此處的 JetBrain 成員所建議的: https : //discuss.kotlinlang.org/t/intellij-kotlin-project-screw-up/597
就我而言,這是一個配置錯誤的 IntelliJ 實例。
項目結構 -> SDKs -> 刪除並再次添加 Java SDK
遇到了這個問題。 我必須將以下內容添加到我的 build.grade 中:
apply plugin: 'kotlin-android'
好吧,我來過這里幾次,並不完全確定這是如何或為什么發生的,但閱讀表明它是 Kotlin/JVM 不匹配。 我已經嘗試了本頁提到的許多事情,但並非沒有完全成功。 這是 IDE 在嘗試通過 IDE 運行測試后在消息面板中顯示的那種症狀。 然而,代碼面板沒有紅線表示無法找到或導入模塊或任何不合適的東西。
我的項目(在撰寫本文時)是 IntelliJ 中的 gradle 4.10.2 kotlin 1.3 項目(IntelliJ IDEA 2018.2.5(終極版)Build #IU-182.4892.20,建於 2018 年 10 月 16 日)
不過,對於初學者來說,我使緩存無效並重新啟動。 然后運行一個 gradle clean build。 重建項目后仍然沒有喜悅。 我進入項目設置並注意到編譯器版本未設置為 java 8,我將 Compiler/Kotlin/Target JVM Version 和 Compiler/Java/Project Byte Code 設置為 1.8/8(見下文),然后在IDE,我們又開始營業了! 在我的案例中解決了參考文獻。
獨立 Kotlin 項目的一個可能解決方案是在根項目中顯式包含 Kotlin 標准庫。
要在 IntelliJ IDEA 中做到這一點:
對我來說,這是由於項目在其項目結構中缺少 Gradle 庫。
只需添加 build.gradle: apply plugin: 'idea'
然后運行: $ gradle idea
之后 gradle 重建依賴庫並識別引用!
我的問題是通過添加kotlin
解決的,如下所示
演示文稿.gradle(app.gradle)
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android' // here
apply plugin: 'kotlin-android-extensions' // and here
android {
...
}
dependencies {
...
}
domain.gradle (純 kotlin)
我的錯誤在這里拋出,因為 Android Studio 將我的域模塊創建為純 Java 模塊並將插件應用為 java,並且我在我的演示模塊中使用了它,該模塊是一個 Android/Kotlin 模塊
Android Studio 找到並導入包的路徑但不兼容不允許構建。
只需刪除
apply plugin: 'java'
並切換到 kotlin 如下
apply plugin: 'kotlin' // here is
dependencies {
...
}
...
數據.gradle
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android' // here
apply plugin: 'kotlin-android-extensions' // and here
android {
...
}
dependencies {
..
}
我認為這會有所幫助
與 IDEA 14.1.5 相同,Kotlin v.1.0.0-beta-1038-IJ141-17。
Kotlin 在創建新項目時獲得自己的列表條目(如 Java),但唯一有效的配置是:
新 | 項目 | 爪哇| “Kotlin (Java)”(確保您也配置了 Project SDK)
使用庫:創建,“復制到:lib”。
我嘗試了一切:清理構建文件夾,運行gradle clean build
,執行 AS invalidate cache(x2),重新安裝 Kotlin 插件,重新啟動 pc。
但最終在完成所有這些之后它仍然沒有工作,但也從這一行的項目build.gradle
中刪除: apply plugin: 'kotlin-android-extensions'
, gradle sync 然后重新添加工作
今天發生在我身上。
我的問題是我打開了太多帶有源代碼的選項卡(我不知道它們是打開的)。
如果您關閉所有選項卡,也許您會混淆 IntelliJ 以正確索引依賴項
就我而言,我已經嘗試了所有方法來清除緩存、手動刪除依賴項 JAR 並重新加載 Maven 依賴項。
在我為項目啟用所有子級和父級 POM 后,問題解決了:
首選項 -> 構建、執行、部署 -> 構建工具 -> Maven -> 忽略的文件
在嘗試了幾個步驟之后,這對我有用。
右鍵單擊項目 > 打開模塊設置 > 項目設置 > 模塊
我刪除了其他配置,只保留了一個,即。 “第一個微服務 - Kotlin”
從首選項 > 構建、執行、部署 > 編譯 > Kotlin 編譯器
從首選項 > 構建、執行、部署 > 編譯 > Java 編譯器
從 Preferences > Build, Execution, Deployment > Build Tools > Maven > Runner
一旦完成運行:
Maven 清潔
Maven編譯
Maven 安裝
您的根 build.gradle 文件有問題
更新那些版本
對我有用的是右鍵單擊項目 > Maven > 重新加載項目。
我在這個 IDE bug 上卡了半天。 這當然是與集成 Kotlin 插件的兼容性有關的問題,但如果通過前面答案中解釋的各種操作無法解決,唯一可行的解決方案似乎是完全卸載(刪除緩存和插件)並重新安裝IntelliJ。 可能有一些舊插件潛伏在 IDE 的某個地方
我遇到了同樣的問題,但這不是一個 intellij 問題,而不是新 Ktor 版本的映射問題,所以首先你可以檢查你是否必須在這個站點上將依賴項從 1.6.* 遷移到 Ktor 2.0.* :
如果您使用@UtilityClass - lombok 庫。
Kotlin 對此並不友好。
例如:您在 java class 中有注釋 @UtilityClass
private final String hello = 'Hello'
你試圖將這個常量注入 Kotlin class,你會得到
'Unresolved reference'
解決方案是:使字段static:
private static final String hello = 'Hello'
#@UtilityClass #UnresolvedReference #Kotlin #Java
Invalidate Intellij Idea cashes 並重啟:File -> Invalidate Cashes... -> Select 必要的項目和
有時在類似的情況下(我不認為這是你的問題,因為你的情況很簡單)值得檢查 kotlin 文件包。
如果您在同一個包中有 Kotlin 文件並在那里放了一些類並且錯過了包聲明,它會在 IntelliJ 中查找您在同一個包中具有類但沒有包定義的 IntelliJ 向您顯示:
錯誤:(5, 5) Kotlin:未解析的參考:...
在 Android Studio 中使緩存無效並更新 Kotlin 插件對我來說很有效。
我遇到這個問題是因為我試圖設置一個多平台庫配置。
我已經從“build.gradle”文件中刪除了所有源集及其依賴項,但保留了“通用”源集。
本機工作正常,但 JVM 無法構建並顯示您的錯誤。
最后,解決方案是不刪除JVM的Source集,也不刪除它的依賴項
我想補充的另一件事是,您需要先選擇View -> Tool Windows -> Gradle,然后才能使用 Gradle 運行項目。
如果使用 Gradle 項目構建和運行正常,但使用 IntelliJ 則不能,那么這可以解決問題。
我遇到這個問題是因為 linter 正在打印我的對象是Foo
一個實例,而編譯器無法定義它的類型並認為它是一個Any
對象(在我的情況下更復雜,linter 在下面的代碼中顯示錯誤但想法在這里):
class Foo {
val bar: Int = 0
}
fun test(): Any {
return Foo()
}
val foo = test()
foo.bar // <-- Linter consider that foo is an Instance of Foo but not the compiler because it's an Any object so it show the error at compilation.
為了修復它,我不得不投射我的對象:
val foo = test() as Foo
最簡單的解決方案:
工具->Kotlin->在項目中配置Kotin
如果發現有用就點贊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.