IntelliJ 中的 Kotlin 未解析引用

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

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

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

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

这是我第一次使用 IntelliJ。我也从来没有做过 Java 项目。我错过了什么吗?

编辑: 我已经看过 另一个问题了,虽然它不适合我的情况。

306617 次浏览

与 IDEA 14.1.5,Kotlin 诉1.0.0-beta-1038-IJ141-17一样。
Kotlin 在创建新项目时有自己的列表条目(如 Java) ,但唯一可用的配置是:

New | Project | Java | “ Kotlin (Java)”(确保也配置了 ProjectSDK)
Use library: 创建“ Copy to: lib”。

您的 Intellij IDEA 插件和您在项目中使用的 Kotlin 运行时/编译器需要匹配。例如,如果 IDE 插件是 Beta 1,但是你的 Gradle/Maven 项目使用的是 M12,那么你将会遇到和你描述的完全一样的问题。检查一下所有东西是否对齐。

如果你仍然有问题,使用一些旧的插件,你需要清除 Intellij 的缓存(文件菜单,清除缓存和重新启动,选择选项重新启动)。

更新资料 -01/2022

关于这个问题的 喷气机脑线程已经移动,无处可寻,所以下面的链接不再有效。

选项 每个单元Kotlin -> FIX已经不存在了,而且多年来一直都是这样,因为在早期的版本中,这只是处理集成问题的一个临时补丁。


如果有人偶然发现这个和 都不是Invalidate CacheUpdate Kotlin's Version工作:

  1. 首先,确保你可以在 IDE 之外构建它,如果你使用的是 gradle,例如:

    等级清晰的体型

如果一切顺利,那么使用 Kotlin的环境就很好。

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

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

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

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

如果你把 Kotlin 文件放在同一个包里,然后把一些类放在那里,却漏掉了包的声明,它会在 IntelliJ 里面看到你在同一个包里有类,但是没有包的定义,IntelliJ 会显示给你看:

错误: (5,5) Kotlin: 未解析的引用: ..。

我尝试了所有方法: 清理构建文件夹,运行 gradle clean build,执行作为无效缓存(x2) ,重新安装 Kotlin 插件,重新启动电脑。

但是在做了所有这些之后,它仍然没有工作,但是从项目 build.gradle中移除了这一行: apply plugin: 'kotlin-android-extensions',渐变同步,然后重新添加工作

对于独立的 Kotlin 项目,一个可能的解决方案是将 Kotlin 标准库明确地包含在 root 项目中。

在 IntelliJ IDEA 中这样做:

  • 按 Ctrl + Shift + A (搜索动作或选项)
  • 输入“ Configurekotlin in project”,让它包含为您准备的标准库

遇到了这个问题,我不得不在我的构建中加入以下内容:

apply plugin: 'kotlin-android'

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

只要加上 build.gradle: 应用插件: ‘ idea’

然后跑: $分级的想法

之后,分级重新构建依赖关系库和引用被识别!

在我的例子中,它是一个配置错误的 IntelliJ 实例。

项目结构-> SDK-> 删除并再次添加 JavaSDK

好吧,我已经来过这里几次了,但不完全确定这是怎么发生的,为什么会发生,但是从阅读材料中可以看出,这是 Kotlin/JVM 不匹配。我已经尝试了这个页面上提到的一些事情,但不是没有完全成功。这是 IDE 在尝试通过 IDE 运行测试后在消息面板中显示的症状类型。但是,代码面板没有红线表示无法找到或导入模块或任何不正常的情况。

enter image description here

我的项目(在撰写本文时)是 IntelliJ (IntelliJ IDEA 2018.2.5(终极版) Build # IU-182.4892.20,建于2018年10月16日)中的一个4.10.2 kotlin 1.3级项目

首先,我使缓存失效并重新启动。然后做了一个级别清晰的检查。重建后的项目仍然没有乐趣。我进入项目设置,注意到编译器版本没有设置为 Java 8,我设置了编译器/Kotlin/目标 JVM 版本和编译器/Java/项目字节码为1.8/8(见下文) ,然后在 IDE 中运行了一些测试,我们回到了业务!我的案子已经解决了。

enter image description here

enter image description here

今天发生在我身上。

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

如果关闭所有的选项卡,也许可以解除 IntelliJ 对依赖项的正确索引

我的问题通过如下添加 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 {
...
}


...

数据,分级

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”源集。

本机正常工作,但是 JVM 无法构建并显示了错误。

最后,解决方案是既不删除 JVM 的 Source 集,也不删除它的依赖项

另一件事,我想添加的是,您需要选择 查看-> 工具窗口-> 分级之前,您可以运行的项目使用等级。

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

我太得到这个错误,但我已经解决了这个使用下面的概念。

  1. 重新启动你的智慧想法社区版。
  2. 然后,到右手边的角落设置 java 的配置。

enter image description here

  1. 选择所有模块的配置设置。然后重新运行代码。它将工作。

出现这个错误是因为没有正确配置 java。

最简单的解决方案:

工具-> Kotlin-> 在 Project 中配置 Kotin

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

enter image description here

有时这种情况会发生,因为你正试图使用一个项目与 Gradle 的 Kotlin 插件不兼容的版本与你的 IDE 插件。检查 build.gradle 中 org.jetbrains.Kotlin.jvm 和其他 Kotlin 插件的版本,以及 IDE 中已安装的 Kotlin 插件的版本,并尝试使它们相似:

enter image description here

enter image description here

顶级解决方案 对我不起作用,在一些方法尝试后,手动删除 IDEA 缓存:

缓存目录:

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

解决方案来源: KTX 问题

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

  1. crtl + shift + alt + s 键输入项目结构。
  2. 在“项目设置”中选择 project
  3. 然后在 ProjectSDK 中单击 java 版本并选择 Kotlin。
  4. 运行项目。
  5. 做所有1至4,但再次选择您的 jdk。
  6. 重新运行项目。

enter image description here

在我的例子中,我尝试了所有方法来清除缓存、手动删除依赖项 JAR 和重新加载 Maven 依赖项。

在我为项目启用了所有孩子和家长 POM 之后,问题得到了解决:

  1. 后藤

首选项-> 构建,执行,部署-> 构建工具-> Maven-> 被忽略的文件

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

在尝试了几个步骤之后,这个方法对我很有效。

右键单击 Project > Open Module Settings > Project Settings > Module
我删除了其他配置,只保留了一个,比如“ first microservice-Kotlin”

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

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

从首选项 > 构建、执行、部署 > 构建工具 > Maven > 运行程序

一旦完成,运行:
Maven 是清白的
Maven 收到
Maven 安装

您的 root build.gradle 文件有问题

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

更新那些版本

对我有效的是右键单击项目 > Maven > Reload 项目。

我被这个 IDE bug 困住了半天。这当然是一个与集成 Kotlin 插件的兼容性有关的问题,但是如果它不能通过前面解释的各种操作来解决,唯一看起来有效的解决方案就是完全 UNINSTALL (删除缓存和插件)和 REINSTALL IntelliJ。 可能在 IDE 的某个地方潜伏着一些旧的插件

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

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

如果使用 @ UtilityClass-lombok lib。

Kotlin 对此并不友好。

例如: 在 java 类中有注释@UtilityClass

private final String hello = 'Hello'

你试图把这个常量注入到 Kotlin 类中,你会得到

'Unresolved reference'

解决办法是: 使字段静止:

private static final String hello = 'Hello'

#@UtilityClass # UnResolvedReference # Kotlin # Java