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

Gradle Kotlin DSL中Java与Kotlin混编的sourceSets配置问题

解决Java与Kotlin混编Spring Boot项目Gradle编译问题

针对你遇到的compileJava任务无法找到Kotlin代码的问题,在Gradle 8.7 Kotlin DSL中可以通过调整编译任务依赖和输出目录配置来解决,具体步骤如下:

1. 确保插件正确配置

首先确认build.gradle.kts中已正确应用Spring Boot和Kotlin插件,版本保持兼容(比如Spring Boot 3.2.x对应Kotlin 1.9.x):

plugins {
    id("org.springframework.boot") version "3.2.5"
    id("io.spring.dependency-management") version "1.1.4"
    kotlin("jvm") version "1.9.24"
    kotlin("plugin.spring") version "1.9.24"
}

2. 明确SourceSets配置(可选但推荐)

虽然Gradle默认已识别src/main/java和src/main/kotlin,但显式配置可避免歧义:

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

3. 调整编译任务依赖与输出目录

核心是确保Kotlin代码先编译,且Java编译任务能访问Kotlin的编译输出,Gradle 8+已弃用destinationDir,需使用destinationDirectory.set():

tasks {
    // 让Java编译任务依赖Kotlin编译任务,保证Kotlin先编译完成
    compileJava {
        dependsOn(compileKotlin)
        // 将Kotlin编译输出目录加入Java编译的类路径
        classpath += files(compileKotlin.get().destinationDirectory)
    }

    // 配置Kotlin编译输出目录(Gradle 8+ 标准写法)
    compileKotlin {
        destinationDirectory.set(layout.buildDirectory.dir("classes/kotlin/main"))
    }

    // 配置Java编译输出目录(保持默认路径即可,也可自定义)
    compileJava {
        destinationDirectory.set(layout.buildDirectory.dir("classes/java/main"))
    }

    // 测试代码混编的话,同步配置测试编译任务
    compileTestJava {
        dependsOn(compileTestKotlin)
        classpath += files(compileTestKotlin.get().destinationDirectory)
    }
}

4. 验证编译

执行以下命令清理并重新构建项目:

./gradlew clean build

配置说明

  • dependsOn(compileKotlin):强制compileJava在compileKotlin完成后执行,确保Java编译时能找到Kotlin生成的class文件。
  • destinationDirectory.set():替代旧版destinationDir的API,符合Gradle 8+ Kotlin DSL的规范。
  • 向compileJava的classpath添加Kotlin编译输出:确保Java编译器能扫描到Kotlin的类定义。

内容的提问来源于stack exchange,提问作者Raymond Chenon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:10:03