繁体   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