IntelliJ 中的 Kotlin 未解决引用

Kotlin unresolved reference in IntelliJ

我从 this tutorial 开始学习 IntelliJ IDEA 中的 Kotlin。
当我尝试 运行 以下示例时,

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

构建失败并出现以下错误:

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

这是我第一次使用 IntelliJ。我也从未参与过 Java 项目。我错过了什么吗?

编辑:我已经看到了this other question,虽然它对我的情况无效。

与 IDEA 14.1.5 相同,Kotlin v.1.0.0-beta-1038-IJ141-17。
Kotlin 在创建新项目时获得自己的列表条目(如 Java),但唯一有效的配置是:

新 |项目 | Java | "Kotlin (Java)"(确保您也配置了 Project SDK)
使用库:创建,"Copy to: lib".

你的 Intellij IDEA​​ 插件和你在项目中使用的 Kotlin runtime/compiler 需要匹配。例如,如果 IDE 插件是 Beta 1,但您的 Gradle/Maven 项目使用 M12,您将遇到与您描述的完全相同的问题。因此,请检查所有内容是否对齐。

如果您仍然遇到问题,对于一些较旧的插件,您需要清除 Intellij IDEA​​ 中的缓存(文件菜单,清除缓存并重新启动,select 选项以重新启动)。

更新 - 01/2022

关于这个问题的 jetbrains 线程已经移动并且无处可寻,因此下面的 link 不再有效。

选项,per moduleKotlin -> FIX 不再存在并且已经存在多年,因为这是一个临时补丁来处理集成问题早期的早期版本。


如果有人偶然发现了这个并且 NEITHER Invalidate CacheUpdate Kotlin's Version 工作:

  1. 首先,确保您可以从 IDE 外部构建它。如果您使用 gradle,例如:

    gradle 清理构建

如果一切顺利,那么您的环境就可以使用 Kotlin

  1. 要修复 IDE 版本,尝试以下操作

Project Structure -> {Select Module} -> Kotlin -> FIX

正如 JetBrain 成员在此处的建议:https://discuss.kotlinlang.org/t/intellij-kotlin-project-screw-up/597

有时在类似的情况下(我不认为这是你的问题,因为你的情况很简单)值得检查kotlin文件包。

如果您在同一个包中有 Kotlin 文件并在那里放了一些 类 并且错过了包声明,它会在 IntelliJ 内部查找您在同一个包中有 类 但没有包定义IntelliJ 向您显示:

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

我尝试了一切:清理构建文件夹,运行 gradle clean build,执行 AS invalidate cache(x2),重新安装 Kotlin 插件,重启电脑。

但最后在完成所有这些之后它仍然没有用,但也从项目 build.gradle 中删除了这一行:apply plugin: 'kotlin-android-extensions'、gradle sync 然后重新-添加成功

独立 Kotlin 项目的一个可能解决方案是在根项目中明确包含 Kotlin 标准库。

要在 IntelliJ IDEA 中执行此操作:

  • 按 Ctrl+Shift+A(搜索操作或选项)
  • 输入 "Configure kotlin in project" 并让它为您包含标准库

运行进入这个问题。我必须将以下内容添加到我的 build.grade 中:

apply plugin: 'kotlin-android'

对我来说,这是因为该项目在其项目结构中缺少 Gradle 个库。

只需添加build.gradle: apply plugin: 'idea'

然后 运行: $ gradle idea

之后gradle重建依赖库并识别引用!

就我而言,这是一个错误配置的 IntelliJ 实例。

Project Structure -> SDKs -> Remove and add the Java SDK again

好吧,我来过这里几次,但不完全确定这是怎么发生的或为什么会发生,但阅读表明它 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 干净的构建。重建项目后仍然没有快乐。我进入项目设置并注意到编译器版本未设置为 java 8,我将 Compiler/Kotlin/Target JVM 版本和 Compiler/Java/Project 字节代码设置为 1.8/8(见下文),然后运行 IDE 中的一些测试,我们恢复正常了!我的案例中的参考文献已解决。

今天发生在我身上。

我的问题是我打开了太多带有源代码的标签页(我不知道它们已打开)。

如果您关闭所有选项卡,也许您会混淆 IntelliJ 以正确索引依赖项

我的问题通过添加 kotlin 解决

presentation.gradle (app.gradle)

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android' // here

apply plugin: 'kotlin-android-extensions' // and here

android {
    ...
}

dependencies {
    ...
}

domain.gradle(纯科特林)

My error was throw here, because Android Studio create my domain module as pure Java Module and applied plugin as java, and I used it in the my presentation module that is a Android/Kotlin Module

The Android Studio finds and import the path of package but the incompatibillity don't allow the build.

Just remove apply plugin: 'java' and swith to kotlin as follow

apply plugin: 'kotlin' // here is

dependencies {
    ...
}

...

data.gradle

apply plugin: 'com.android.library'

apply plugin: 'kotlin-android' // here

apply plugin: 'kotlin-android-extensions' // and here 

android {
    ...
}

dependencies {
    ..
}

我认为这会有所帮助

在 Android Studio 中使缓存失效并更新 Kotlin 插件对我来说是个窍门。

我遇到这个问题是因为我正在尝试设置多平台库配置。

我已经从 "build.gradle" 文件中删除了所有源集及其依赖项,但保留了 "common" 源集。

Native 工作正常,但 JVM 无法构建并显示您的错误。

最终,解决方案是不删除 JVM 的源集及其依赖项

我想补充的另一件事是,您需要先select 查看 -> 工具 Windows -> Gradle 运行 项目可以使用 Gradle.

如果使用 Gradle 项目构建和 运行s 正常但使用 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

我也遇到了这个错误,但我已经使用以下概念解决了这个问题。

  1. 重启你的intellij idea社区版。
  2. 之后,在右上角设置 java 的配置。

  1. 为所有模块选择配置设置。然后重新运行代码。它会起作用。

出现此错误是因为未正确配置 java。

最简单的解决方案:

工具->Kotlin->在项目中配置Kotin

检查并安装 Android Studio 更新。这解决了问题。

有时会发生这种情况,因为您试图在 Gradle 中使用具有不兼容版本的 Kotlin 插件的项目,而在 IDE 中使用插件。检查 org.jetbrains.kotlin.jvm 和 build.gradle 中的其他 Kotlin 插件的版本,以及 IDE 中安装的 kotlin 插件的版本,并尝试使其相似:

对我不起作用,尝试了一些方法后,手动删除 IDEA 缓存有效:

缓存目录:

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

解决方案来源:KTX issues

在我的情况下,所有设置都很好,我做了 Invalidate Cache and restart,但我仍然遇到问题。 我尝试了以下解决方案并为我工作。

  1. crtl + shift + alt + s 进入项目结构。
  2. 在项目设置中 select project.
  3. 然后在 Project SDK 中单击您的 java 版本和 select Kotlin。
  4. 运行 项目。
  5. 完成所有 1 到 4,但再次 select 您的 jdk。
  6. 重新运行你的项目。

就我而言,我尝试了所有方法来清除缓存、手动删除依赖项 JAR 并重新加载 Maven 依赖项。

在我为项目启用所有子项和父项 POM 后问题得到解决:

  1. 转到

Preferences -> Build,Execution,Deployment -> Build Tool -> Maven -> Ignored Files

  1. 取消选中所有忽略的文件,然后重新应用
  2. 同步 Maven 依赖项
  3. 清除缓存并重新启动 IntelliJ(如果您仍然看到此错误)

尝试几个步骤后,这对我有用。

右键单击项目 > 打开模块设置 > 项目设置 > 模块
我删除了其他配置,只保留了一个,即。 “第一个微服务 - Kotlin”

从首选项 > 构建、执行、部署 > 编译 > Kotlin 编译器

从首选项 > 构建、执行、部署 > 编译 > Java 编译器

从首选项 > 构建、执行、部署 > 构建工具 > Maven > Runner

完成后运行:
Maven 清理
Maven编译
Maven 安装

您的根 build.gradle 文件有问题

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

更新那些版本

对我有用的方法是右键单击项目 > Maven > 重新加载项目。

我被这个 IDE 错误卡住了半天。这当然是与集成 Kotlin 插件的兼容性有关的问题,但如果通过前面答案中解释的各种操作无法解决,唯一可行的解​​决方案似乎是完全卸载(删除缓存和插件)并重新安装IntelliJ。 IDE

中可能潜伏着一些旧插件

我运行遇到了同样的问题,但这不是intellij问题,而不是新Ktor版本的映射问题,所以首先你可以检查是否必须从1.6迁移依赖项。 * 到本网站上的 Ktor 2.0.*:

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