簡體   English   中英

Kotlin IntelliJ 中未解決的引用

[英]Kotlin unresolved reference in IntelliJ

我從本教程開始學習 Kotlin 在 IntelliJ IDEA 中。
當我嘗試運行以下示例時,

fun main(args: Array<String>) {
    println("lol")
}

構建失敗並出現以下錯誤:

Error:(5, 5) Kotlin: Unresolved reference: println

這是我第一次使用 IntelliJ。 我也從未參與過 Java 項目。 我錯過了什么嗎?

編輯:我已經看過這個其他問題,盡管它對我的情況無效。

您在項目中使用的 Intellij IDEA 插件和 Kotlin 運行時/編譯器需要匹配。 例如,如果 IDE 插件是 Beta 1,但您的 Gradle/Maven 項目使用 M12,您將遇到與您描述的完全一樣的問題。 因此,請檢查所有內容是否對齊。

如果您仍然有問題,對於一些較舊的插件,您需要清除 Intellij IDEA 中的緩存(文件菜單,清除緩存並重新啟動,選擇重新啟動選項)。

如果有人碰到這個蹣跚既不Invalidate CacheUpdate 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 中做到這一點:

  • 按 Ctrl+Shift+A(搜索操作或選項)
  • 輸入“在項目中配置 kotlin”並讓它為您包含標准庫

對我來說,這是由於項目在其項目結構中缺少 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 {
    ..
}

我認為這會有所幫助

檢查並安裝 Android Studio 更新。 這解決了問題。

在此處輸入圖片說明

有時這可能是因為您嘗試在 Gradle 中使用具有不兼容版本的 Kotlin 插件的項目和 IDE 中的插件。 檢查 build.gradle 中 org.jetbrains.kotlin.jvm 和其他 Kotlin 插件的版本,以及 IDE 中已安裝的 kotlin 插件的版本,並嘗試使其相似:

在此處輸入圖片說明

在此處輸入圖片說明

與 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 然后重新添加工作

頂級解決方案對我不起作用,在嘗試了一些方法后,手動刪除 IDEA 緩存有效:

緩存目錄:

~/Library/Caches/JetBrains/<product><version> on macOS
~/.cache/JetBrains/<product><version> on Linux
%LOCALAPPDATA%\JetBrains\<product><version> on Windows

解決方案來源: KTX問題

今天發生在我身上。

我的問題是我打開了太多帶有源代碼的選項卡(我不知道它們是打開的)。

如果您關閉所有選項卡,也許您會混淆 IntelliJ 以正確索引依賴項

我也收到了這個錯誤,但我已經使用下面的概念解決了這個問題。

  1. 重新啟動您的 Intellij 創意社區版。
  2. 之后,在右上角設置java的配置。

在此處輸入圖片說明

  1. 為所有模塊選擇配置設置。 然后重新運行代碼。 它會起作用。

這個錯誤是因為沒有正確配置java。

在我的情況下,所有設置都很好,我做了Invalidate Cache and restart ,但我仍然遇到問題。 我嘗試了以下解決方案並為我工作。

  1. crtl + shift + alt + s進入項目結構。
  2. 在項目設置中選擇project
  3. 然后在 Project SDK 中單擊您的 Java 版本並選擇 Kotlin。
  4. 運行項目。
  5. 執行所有 1 到 4,但再次選擇您的 jdk。
  6. 重新運行你的項目。

在此處輸入圖片說明

就我而言,我已經嘗試了所有方法來清除緩存、手動刪除依賴項 JAR 並重新加載 Maven 依賴項。

在我為項目啟用所有子級和父級 POM 后,問題解決了:

首選項 -> 構建、執行、部署 -> 構建工具 -> Maven -> 忽略的文件

  1. 取消選中所有被忽略的文件,然后重新應用
  2. 同步 Maven 依賴項
  3. 清除緩存並重新啟動 IntelliJ(如果您仍然看到此錯誤)

在嘗試了幾個步驟之后,這對我有用。

右鍵單擊項目 > 打開模塊設置 > 項目設置 > 模塊
我刪除了其他配置,只保留了一個,即。 “第一個微服務 - Kotlin”

從首選項 > 構建、執行、部署 > 編譯 > Kotlin 編譯器

從首選項 > 構建、執行、部署 > 編譯 > Java 編譯器

從 Preferences > Build, Execution, Deployment > Build Tools > Maven > Runner

一旦完成運行:
Maven 清潔
Maven編譯
Maven 安裝

您的根 build.gradle 文件有問題

  1. 檢查 org.jetbrains.kotlin:kotlin-gradle-plugin 的版本
  2. 檢查 com.android.tools.build.gradle 的版本

更新那些版本

對我有用的是右鍵單擊項目 > Maven > 重新加載項目。

我在這個 IDE bug 上卡了半天。 這當然是與集成 Kotlin 插件的兼容性有關的問題,但如果通過前面答案中解釋的各種操作無法解決,唯一可行的解決方案似乎是完全卸載(刪除緩存和插件)並重新安裝IntelliJ。 可能有一些舊插件潛伏在 IDE 的某個地方

我遇到了同樣的問題,但這不是一個 intellij 問題,而不是新 Ktor 版本的映射問題,所以首先你可以檢查你是否必須在這個站點上將依賴項從 1.6.* 遷移到 Ktor 2.0.* :

https://ktor.io/docs/migrating-2.html

如果您使用@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.

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