在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个回答

2

经过几个步骤的尝试,我找到了解决方法。

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

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

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

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

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


现在设置中已经没有Kotlin编译器这个选项了。 - user924

1

最佳解决方案对我无效,在尝试了一些方法后,手动删除IDEA缓存解决了问题:

缓存目录:

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

解决方案源代码:KTX问题


1

我在 IDEA 14.1.5 和 Kotlin v.1.0.0-beta-1038-IJ141-17 中遇到了同样的问题。创建新项目时,Kotlin 会像 Java 一样获得自己的列表条目,但唯一有效的配置是:

新建 | 项目 | Java | "Kotlin(Java)"(确保您也配置了项目 SDK)
使用库:创建,“复制到:lib”。


1
我尝试了所有方法:清理构建文件夹,运行gradle clean build,执行AS缓存失效(x2),重新安装Kotlin插件,重启电脑。但最终即使做了这一切仍然不起作用,但从项目的build.gradle中删除此行:apply plugin: 'kotlin-android-extensions',进行gradle同步,然后重新添加即可。

1
在我的情况下,所有设置都正确,我执行了“使缓存无效并重启”,但仍然遇到了问题。我尝试了以下解决方案,并且对我有用。
  1. 按下进入项目结构。
  2. 在“项目设置”中选择“项目”。
  3. 然后在“项目SDK”中单击您的Java版本,然后选择Kotlin。
  4. 运行该项目。
  5. 执行1到4,但是再次选择您的jdk。
  6. 重新运行您的项目。

enter image description here


0
如果你使用lombok库中的@UtilityClass注解,那么Kotlin并不兼容它。例如:你在Java类中使用了@UtilityClass注解。
private final String hello = 'Hello'

你试图将这个 const 注入到 Kotlin 类中,你会得到

'Unresolved reference'

解决方案是:将该字段设为静态。
private static final String hello = 'Hello'

#@实用工具类 #未解决的引用 #Kotlin #Java


OP遇到了一个非常具体的项目结构问题。在这里,不使用特定的库并不是解决办法。 - undefined

0
在我的情况下,我在maven构建过程中遇到了这个问题,原因在于spring-boot-maven-plugin。 最初,我有一个单模块的maven项目,其中包含一个Application类。后来,我创建了几个模块(core, connectors, api, etc),并将pom文件复制到所有模块中。在改变项目结构后,只有api模块中有Application.kt类,api模块还将其他模块作为依赖项放在pom.xml中。当我运行mvn clean install时,spring-boot-maven-plugin会在每个模块中触发,并导致jar包内的类重新打包,我假设它们被移动到了某些目录中。因此,在package/install期间,其他模块的类对于'api'模块不可见。 解决方法是从类似的库模块中移除spring-boot-maven-plugin,并将其仅保留在具有Application.kt类的模块中。

0

清除缓存并更新Android Studio中的Kotlin插件对我起了作用。


0

我之前也遇到了这个错误,但是我通过以下方法解决了它。

  1. 重新启动您的IntelliJ IDEA Community Edition。
  2. 然后,转到右上角设置Java配置。

enter image description here

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

这个错误是因为没有正确配置java引起的。


3
抱歉,但是第二点不太清楚。我找不到“右上角”。 - Deunz
重新安装IntelliJ解决了我的问题。 - icecube

0
今天发生了这样的事情。
我的问题是我打开了太多的标签页(我不知道它们是打开的),上面有源代码。
如果你关闭所有的标签页,也许你就能让IntelliJ正确地索引依赖项。

实际上这是完全有道理的,你得到负分的原因是因为你没有解释清楚。 如果某人在IDE中打开了两个项目,比如一个使用Gradle,另一个使用Maven;运行其中一个项目可能会导致未解决的引用。 - HA S

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