在Java中使用Kotlin类:找不到符号
我已经find了关于Android的这个类似的问题,但我使用普通的Java与Maven作为构建工具。 我认为最好发表一个新的问题。
我创建了一个Kotlin类,我试图从Java类MyKotlinClass.class
。 Maven构建失败,而IntelliJ Idea中的编译工作正常。 我已经将Kotlin插件添加到maven:
org.jetbrains.kotlin kotlin-maven-plugin ${kotlin.version} compile compile compile test-compile test-compile test-compile
但是这并没有帮助:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project app: Compilation failure [ERROR] MyClassLinkingKotlin.java:[100,40] error: cannot find symbol
行/列恰好引用符号MyKotlinClass.class
。 即使是这样使用也会失败:
System.err.println(MyKotlinClass.class)
您的Maven配置会添加Kotlin编译器插件,但不会调整Java编译器插件的执行,以便Java编译器在Kotlin编译器之后运行。 因此,Java编译器在Kotlin之前运行,并没有看到Kotlin编译的类。
这是一个显示混合语言项目的正确配置的摘录(摘自文档 ):
kotlin-maven-plugin org.jetbrains.kotlin ${kotlin.version} compile compile ${project.basedir}/src/main/kotlin ${project.basedir}/src/main/java test-compile test-compile ${project.basedir}/src/test/kotlin ${project.basedir}/src/test/java org.apache.maven.plugins maven-compiler-plugin 3.5.1 default-compile none default-testCompile none java-compile compile compile java-test-compile test-compile testCompile
我遇到了同样的错误,但有正确的POM设置。 我的问题是,我只是用一个Intellij把一个Java类转换成一个Kotlin类,而把这个Kotlin文件留在src/main/java
。
对我来说,解决方案是创建一个src/main/kotlin
并将我的Kotlin类移到那里,并将我的Java文件留在src/main/java
。 但是你确实需要@ yole的答案显示的maven设置。