[英]Kotlin unresolved reference in IntelliJ
您在项目中使用的 Intellij IDEA 插件和 Kotlin 运行时/编译器需要匹配。 例如,如果 IDE 插件是 Beta 1,但您的 Gradle/Maven 项目使用 M12,您将遇到与您描述的完全一样的问题。 因此,请检查所有内容是否对齐。
如果您仍然有问题,对于一些较旧的插件,您需要清除 Intellij IDEA 中的缓存(文件菜单,清除缓存并重新启动,选择重新启动选项)。
如果有人碰到这个蹒跚既不Invalidate Cache
或Update 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 中做到这一点:
对我来说,这是由于项目在其项目结构中缺少 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 {
..
}
我认为这会有所帮助
与 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 然后重新添加工作
今天发生在我身上。
我的问题是我打开了太多带有源代码的选项卡(我不知道它们是打开的)。
如果您关闭所有选项卡,也许您会混淆 IntelliJ 以正确索引依赖项
就我而言,我已经尝试了所有方法来清除缓存、手动删除依赖项 JAR 并重新加载 Maven 依赖项。
在我为项目启用所有子级和父级 POM 后,问题解决了:
首选项 -> 构建、执行、部署 -> 构建工具 -> Maven -> 忽略的文件
在尝试了几个步骤之后,这对我有用。
右键单击项目 > 打开模块设置 > 项目设置 > 模块
我删除了其他配置,只保留了一个,即。 “第一个微服务 - Kotlin”
从首选项 > 构建、执行、部署 > 编译 > Kotlin 编译器
从首选项 > 构建、执行、部署 > 编译 > Java 编译器
从 Preferences > Build, Execution, Deployment > Build Tools > Maven > Runner
一旦完成运行:
Maven 清洁
Maven编译
Maven 安装
您的根 build.gradle 文件有问题
更新那些版本
对我有用的是右键单击项目 > Maven > 重新加载项目。
我在这个 IDE bug 上卡了半天。 这当然是与集成 Kotlin 插件的兼容性有关的问题,但如果通过前面答案中解释的各种操作无法解决,唯一可行的解决方案似乎是完全卸载(删除缓存和插件)并重新安装IntelliJ。 可能有一些旧插件潜伏在 IDE 的某个地方
我遇到了同样的问题,但这不是一个 intellij 问题,而不是新 Ktor 版本的映射问题,所以首先你可以检查你是否必须在这个站点上将依赖项从 1.6.* 迁移到 Ktor 2.0.* :
如果您使用@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.