我有一个带有Kotlin代码hello.kt的Maven项目,该代码调用Java代码JavaFoo.java,该代码调用Kotlin代码KotlinFoo.kt. hello.kt也直接调用KotlinFoo.kt.我正在尝试使用mvn clean install使用kotlinlang’s Maven docs中描述的Maven设置来构建它.
如果hello.kt没有调用JavaFoo(但我将JavaFoo留在项目中),那么这个构建就好了.
文档说应该在Java编译器之前调用Kotlin编译器,这告诉我所有Kotlin代码都需要在任何Java代码之前编译,即使用这种设置你可以从Java调用Kotlin但反之亦然.但是,文档将此设置描述为“混合代码应用程序”,而不是“从Java调用Kotlin”.
换句话说,这种失败似乎与文档似乎暗示的内容一致,但与他们直接说的内容不一致 – 或者我只是误解某些东西.
我想从另一个语言中调用每种语言.有没有Maven配置可以做到这一点,好吗?
(我查看了有关混合代码设置的各种StackExchange问题,但没有一个解决方案适用于我.)
的src / main /科特林/ hello.kt:
package com.example.kotlindemo
fun main(args : Array
的src / main /科特林/ KotlinFoo.kt:
package com.example.kotlindemo
class KotlinFoo {
var fooString = "init"
fun printFooString() {
println(this.fooString)
}
}
的src / main / JAVA / JavaFoo.java:
package com.example.kotlindemo;
class JavaFoo {
private KotlinFoo k;
JavaFoo(String initializer) {
k = new KotlinFoo();
k.setFooString(initializer);
}
void printString() {
this.k.printFooString();
}
}
错误:
[ERROR] .../src/main/kotlin/hello.kt: (12,14) Unresolved reference: JavaFoo
最佳答案