gpt4 book ai didi

gradle - gradle无法使用kotlin类编译java类

转载 作者:行者123 更新时间:2023-12-02 13:24:22 24 4
gpt4 key购买 nike

我有一个gradle 4.1多项目,其中包含一个“projectA”,其中包含2个子文件夹“api”和“implementation”。

多项目使用在主要build.gradle的子项目部分中定义的kotlinjava-library插件。
实现项目为:projectA:api提供API依赖项

在api文件夹中,“src / main / java”中包含kotlin和java文件,在实现项目中,我正在根据API创建kotlin类的新实例。

在Intellij Idea中,我没有任何编译错误;但是当我使用gradle编译整个项目时,我有一个error: cannot find symbol。好像compileJava无法访问文件夹kotlin-classes

build/kotlin-classes里面,我看到了我的file.class
类文件也在build / classes目录中

错误的详细信息:

Task :projectA:api:compileKotlin Using kotlin incremental compilation

Task :projectA:implementation:compileJava (...) error: cannot find symbol (the import fails)



更新1 :删除Java库解决了我的问题

最佳答案

这是java-library插件的known issue:当在具有其他JVM语言(Kotlin,Scala,Groovy等)的项目中使用时,它不会注册其他语言的类,因此从属项目在使用这些类时会获取它们。

幸运的是,它也有解决方法。适应Kotlin,它看起来像:

configurations {
apiElements {
outgoing.variants.getByName('classes').artifact(
file: compileKotlin.destinationDir,
type: ArtifactTypeDefinition.JVM_CLASS_DIRECTORY,
builtBy: compileKotlin)
}
}

如果使用Kapt1,则为 file: compileKotlinAfterJava.destinationDir,而对于低于4.0的Gradle版本,请改为使用 builtBy: copyMainKotlinClasses

还可以在Kotlin问题跟踪器中跟踪此问题: KT-18497,跟踪该问题以查看何时在Kotlin Gradle插件侧进行了修复,因此不再需要上述解决方法。

关于gradle - gradle无法使用kotlin类编译java类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45762661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com