我从学习Kotlin的教程开始IntelliJ
。当我尝试运行示例时,即
fun main(args: Array<String>) {
println("lol")
}
该消息将使执行暂停。Error:(5, 5) Kotlin: Unresolved reference: println
这是我第一次使用IntelliJ。我也从未从事过任何Java
项目,我是否缺少某些东西?
编辑:我已经看到了另一个问题。答案对于我的情况无效。
Answers:
您在项目中使用的Intellij IDEA插件和Kotlin运行时/编译器需要匹配。例如,如果IDE插件是Beta 1,但是您的使用M12的Gradle / Maven项目,则将遇到与您所描述的完全相同的问题。因此,请检查所有内容。
如果仍然存在问题,则对于某些较旧的插件,您需要清除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实例。
项目结构-> SDK->删除并再次添加Java SDK
好的,我来过这里几次,但并不完全确定这种情况发生的方式或原因,但是阅读表明它是Kotlin / JVM不匹配的。我已经尝试了此页面上提到的许多方法,但并非没有完全成功。试图通过IDE运行测试之后,IDE就会在消息面板中显示这种症状。但是,代码面板上没有红线,表明无法找到或导入模块或其他不良信息。
我的项目(在撰写本文时)是IntelliJ中的gradle 4.10.2 kotlin 1.3项目(IntelliJ IDEA 2018.2.5(Ultimate Edition)Build#IU-182.4892.20,建于2018年10月16日)
对于初学者,我使缓存无效并重新启动。然后运行gradle清理构建。重建项目后仍然没有喜悦。我进入项目设置,发现编译器版本未设置为Java 8,我将Compiler / Kotlin / Target JVM Version和Compiler / Java / Project Byte Code设置为1.8 / 8(请参见下文),然后在IDE,我们重新营业!在我的情况下,引用已解决。
对我而言,这是由于该项目在其项目结构中缺少Gradle库。
只需添加build.gradle:
apply plugin: 'idea'
然后运行:
$ gradle idea
之后,gradle重建了依赖库并识别了引用!
独立Kotlin项目的可能解决方案是在根项目中显式包含Kotlin标准库。
要在IntelliJ IDEA中做到这一点:
通过添加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将我的域模块创建为纯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集,也不要删除其依赖项
我遇到这个问题是因为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文件包。
如果您在同一软件包中包含Kotlin文件,并在其中放置了一些类而错过了软件包声明,则它会在IntelliJ中查找您在同一软件包中具有类,但没有对软件包进行定义,则IntelliJ将向您显示:
错误:(5、5)Kotlin:未解决的参考:...