混合Kotlin Java与Maven,未解决的参考

前端之家收集整理的这篇文章主要介绍了混合Kotlin Java与Maven,未解决的参考前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个带有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.

猜你在找的Java相关文章