在IntelliJ中Kotlin未解决的引用问题

149

我最开始使用这个教程来学习在IntelliJ IDEA中使用Kotlin。
当我尝试运行以下示例时,

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

编译失败,出现以下错误:

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

这是我第一次使用IntelliJ。我也从未在Java项目上工作过。我是否遗漏了什么?

编辑: 我已经看过这个问题了,但对于我的情况无效。


Intellij IDEA的版本是多少?安装了哪个版本的Kotlin插件? - D3xter
你在 Kotlin 运行时对话框中选择了哪个选项? - yole
我昨天刚安装了它。IDEA是14.1版本,同时也安装了最新的Kotlin。 - Anony-mouse
是的,我在使用Gradle和Netbeans的“Hello world”示例时也遇到了这个问题。 Gradle构建可以正常工作。看起来这也是Netbeans插件的问题。可惜最近没有更新Netbeans插件。 - will
这对于我的SpringBoot项目有效。 https://dev59.com/VrDla4cB1Zd3GeqP8311 - Ronny Shibley
对我有帮助的解决方案:点击。需要清理Android Studio缓存。 - SerjantArbuz
32个回答

165

您的Intellij IDEA插件和项目中使用的Kotlin运行时/编译器需要匹配。例如,如果IDE插件是Beta 1,但您的Gradle/Maven项目使用的是M12,那么您会遇到与您描述的问题相同的问题。因此,请检查所有内容是否匹配。

如果您仍然遇到问题,则对于某些旧插件,您需要在Intellij IDEA中清除缓存(文件菜单,清除缓存并重新启动,选择重新启动选项)。


6
清除缓存,更新Android Studio和Kotlin插件的组合对我起了作用。谢谢。 - user1405990
再次问候,经过一些时间考虑和一些 Kotlin 的谷歌搜索 - 我认为这里的原因不在插件本身。**println** 在 kotlin.io 包中。Kotlin-stdlib JAR 中有 "kotlin.io"。所以表面上没有问题。我明确包含了 kotlin.io.* -- 结果:未解决的引用: io。作为一个 JAR 归档文件,引用解析应该是幼儿园级别的东西。那么怎么回事? - will
我回来了...Netbeans的用户可以“修复”这个问题——删除Netbeans用户缓存。您可以通过单击帮助/关于框来查看Netbeans缓存目录的位置。清理——停止Netbeans——删除缓存——重新启动Netbeans——重建!_大功告成_。 - will
如果您在Gradle构建文件中遇到此问题,但项目源文件没有出现此问题,则可以参考以下链接:https://discuss.kotlinlang.org/t/gradle-kotlin-dsl-cannot-access-java-lang-string-error/15562 - AlexO
插件版本是什么意思?Android Studio已安装1.8.20版本。该项目还指定了相同版本的kotlin-gradlePlugin。但错误仍然不时发生,特别是在使用git、切换分支和rebase之后。在新的Android Studio更新之前,它一直正常工作。 - user924

45

更新 - 01/2022

Jetbrains关于此问题的线程已经移动,无法找到,因此下面的链接不再有效。

选项按模块Kotlin -> FIX不再存在,并且自从早期版本中使用这种临时修补程序来处理集成问题以来已经有数年时间了。


如果有人遇到这个问题,无论是使缓存失效还是更新Kotlin版本都不起作用:

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

    gradle clean build

如果一切顺利,则您的环境可以很好地使用Kotlin

  1. 要修复IDE构建,请尝试以下方法

项目结构 -> {选择模块} -> Kotlin -> FIX

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


24
我正在使用Android Studio,但在项目结构>模块中没有“Kotlin”选项,你有什么想法吗? - AutonomousApps
4
在选择模块后,即使我点击企业版IntelliJ中的 Kotlin 选项仍然看不到它,而且当我点击工具-> Kotlin-> 配置时,似乎 Kotlin 已经配置好了。 - heug
6
这句话的含义是“这个命令救了我:./gradlew clean build”,其中"./gradlew"是一个针对Gradle项目进行构建和管理的命令,"clean"意味着在构建之前清除先前生成的任何文件,"build"则是执行实际的构建操作。该语句可能是指执行此命令使得项目成功构建或者解决了其他问题。 - Mateusz Kaflowski

36

在我的情况下,这是一个配置不正确的IntelliJ实例。

项目结构 -> SDKs -> 删除并重新添加Java SDK


这是我在卸载OpenJDK并安装Oracle JDK后遇到的问题。谢谢。 - Patrik Stas
1
这解决了我的IntelliJ 2019.3和OpenJDK 11问题。我只需要再次删除并添加SDK即可。 - z11i
IntelliJ Ultimate Edition 2022.2.1和2023.1.1,OpenJDK 18 ->问题仍然存在!这就是解决方法。谢谢。 - Andrew Spencer

18
遇到了这个问题。我不得不在我的build.gradle文件中添加以下内容: apply plugin: 'kotlin-android'

我正在将项目从Java迁移到Kotlin,其中一个模块出现了问题。最终这个解决方案对我有用。谢谢。 - Susan Thapa

13

好的,我来过这里几次,但并不确定为什么会出现这种情况,阅读后发现可能是Kotlin/JVM版本不匹配。我尝试了这个页面上提到的一些方法,但并没有完全成功。在尝试通过IDE运行测试后,这是IDE显示在消息面板中的症状。然而代码面板没有红线,表明找不到模块或未导入任何异常内容。

输入图片说明

我的项目(撰写本文时)是基于gradle 4.10.2和kotlin 1.3的项目,使用IntelliJ IDEA 2018.2.5(Ultimate Edition)版本号#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中运行了一些测试,我们又回到了正常状态!在我的情况下,引用已解析。

输入图片说明

在此输入图片描述


我遇到了类似的问题,但还必须将我的模块更改为正确的目标JVM版本。 - Jake Walsh

6

对于独立的 Kotlin 项目,一种可能的解决方案是在根项目中显式包含 Kotlin 标准库。

在 IntelliJ IDEA 中进行操作:

  • 按下 Ctrl+Shift+A(搜索操作或选项)
  • 输入“在项目中配置 Kotlin”并让它为您包含标准库

5
有时这可能是因为您正在尝试在Gradle中使用与IDE插件不兼容的Kotlin插件版本的项目。检查build.gradle中org.jetbrains.kotlin.jvm和其他Kotlin插件的版本以及IDE中安装的kotlin插件的版本,并尝试使其相似:

enter image description here

enter image description here


1
愿上帝保佑我们所有人! - Vaulter

4
对我而言,这是由于该项目结构中缺少Gradle库。只需在build.gradle中添加以下内容: apply plugin: 'idea' 然后运行: $ gradle idea 之后,gradle会重新构建依赖库并识别引用!

这个问题是由于缺少Gradle库而需要帮助和解决的。 - Kaushik Burkule

3

通过添加以下的 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(纯 Kotlin)

我的错误出在这里,因为 Android Studio 将我的 domain 模块创建为纯 Java 模块,并将插件应用为 java,而我在我的 presentation 模块中使用了它,该模块是一个 Android/Kotlin 模块。

Android Studio 可以找到并导入包路径,但不兼容性导致构建失败。

只需删除 apply plugin: 'java' 并按以下方式切换到 kotlin 即可。

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 {
    ..
}

我认为这将非常有帮助


2

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

在此输入图片描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接