加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 01:07:42 所属栏目:Java 来源:网络整理
导读:我有一个带有Kotlin代码hello.kt的Maven项目,该代码调用Java代码JavaFoo.java,该代码调用Kotlin代码KotlinFoo.kt. hello.kt也直接调用KotlinFoo.kt.我正在尝试使用mvn clean install使用kotlinlangs Maven docs中描述的Maven设置来构建它. 如果hello.kt没有

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读