在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设置。