Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
gradle无法使用kotlin类编译java类_Gradle_Kotlin - Fatal编程技术网

gradle无法使用kotlin类编译java类

gradle无法使用kotlin类编译java类,gradle,kotlin,Gradle,Kotlin,我有一个gradle 4.1多项目,其中包含一个“projectA”,包含两个子文件夹“api”和“implementation” 多项目使用在main build.gradle的subprojects部分中定义的kotlin和java库插件。 实施项目avec依赖于:projectA:API 在api文件夹中,我在'src/main/java'中有kotlin和java文件,在实现项目中,我正在从api创建kotlin类的新实例 在Intellij Idea中,我没有任何编译错误;但是当我使用

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

多项目使用在main build.gradle的subprojects部分中定义的
kotlin
java库
插件。 实施项目avec依赖于
:projectA:API

在api文件夹中,我在'src/main/java'中有kotlin和java文件,在实现项目中,我正在从api创建kotlin类的新实例

在Intellij Idea中,我没有任何编译错误;但是当我使用gradle编译整个项目时,我有一个
错误:找不到符号。这就好像
compileJava
无法访问文件夹
kotlin classes

构建/kotlin类中,我看到了我的file.class
类文件也位于build/classes目录中

错误的详细信息:

任务:projectA:api:compileKotlin 使用kotlin增量编译

任务:项目A:实施:compileJava (…)错误:找不到符号(导入失败)

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

这是
java库
插件的一个例子:当在项目中使用另一种JVM语言(Kotlin、Scala、Groovy等)时,它不会注册另一种语言的类,以便依赖项目在使用这些类时获得它们

幸运的是,它也有解决办法。根据Kotlin改编,它看起来像:

configurations {
    apiElements {
        outgoing.variants.getByName('classes').artifact(
            file: compileKotlin.destinationDir,
            type: ArtifactTypeDefinition.JVM_CLASS_DIRECTORY,
            builtBy: compileKotlin)
    }
}
如果您使用Kapt1,则它是
文件:compilekotlainafterjava.destinationDir
,对于低于4.0的渐变版本,请使用
buildby:copyMainKotlinClasses

这个问题也会在Kotlin问题跟踪程序中进行跟踪:,跟踪该问题以查看它何时在Kotlin Gradle插件端得到修复,这样就不再需要上述解决方法