|
我有一个带有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问题,但没有一个解决方案适用于我.)
按要求添加代码: pom.xml中:
的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
最佳答案
编译失败,因为您的Java类不在与其package语句匹配的目录中.虽然Kotlin允许您将类放在任何目录中而不管它们所在的包中,但Java要求您将每个文件放在与其目录对应的包中.此要求也适用于混合语言项目.
要修复错误,请将JavaFoo.java移动到src / main / java / com / example / kotlindemo. (编辑:安卓应用网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|