You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为Java sourceSet添加sourceDir,实现compileJava编译Kotlin目录下Java文件

解决Gradle中让compileJava编译src/main/kotlin目录下Java文件的问题

嘿,我明白你的需求——想把Java文件和Kotlin文件放在同一个src/main/kotlin目录里,让compileJava任务能编译这些Java文件对吧?默认情况下Gradle的源集约定是分开存放源码的,所以得手动调整sourceSets配置才行,我来给你说正确的写法:

正确的Kotlin DSL配置

你需要在build.gradle.kts里修改Java的源集配置,把src/main/kotlin目录添加到Java的源目录列表中:

java {
    sourceSets.main {
        java.srcDir("src/main/kotlin")
    }
}

如果你的测试目录也有类似需求(比如src/test/kotlin里放Java测试文件),可以一并加上:

java {
    sourceSets {
        main {
            java.srcDir("src/main/kotlin")
        }
        test {
            java.srcDir("src/test/kotlin")
        }
    }
}

为什么之前的配置没生效?

从你贴的代码片段来看,你只是定义了一个kotlinSrcDir变量,但没有把这个目录添加到Java源集的srcDir列表里,所以Gradle的compileJava任务根本不知道要去这个目录找Java文件。上面的配置直接把目标目录注册到Java源集里,就能让编译任务识别到了。

额外说明

  • 这样配置后,compileJava会同时处理src/main/java和src/main/kotlin里的Java文件,而kotlinCompile任务依然会处理src/main/kotlin里的Kotlin文件,两者不会冲突,还能正常处理跨语言调用(比如Java调用Kotlin,Kotlin调用Java)。
  • 如果你之后想恢复默认约定,只需要把这段配置删掉就行。

内容的提问来源于stack exchange,提问作者Rahul Khimasia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:40:16