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

Kotlin SpringBoot Gradle项目Java Controller接口返回404问题求助

Spring Boot Kotlin项目Java Controller无法识别解决方案

根因说明

默认通过Spring Initializr生成的Kotlin + Gradle项目,未内置Java编译支持,Java源码不会被自动编译加载到项目中,因此Spring无法扫描到对应的Controller组件。

具体修复步骤

1. 修改build.gradle.kts配置,添加Java编译支持

在plugins配置块中新增Java插件,同时补充Java编译参数配置,保证和Kotlin编译的JVM版本一致:

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    id("org.springframework.boot") version "2.5.5"
    id("io.spring.dependency-management") version "1.0.11.RELEASE"
    id("java") // 新增Java插件
    kotlin("jvm") version "1.5.31"
    kotlin("plugin.spring") version "1.5.31"
}

group = "com.example"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_11

configurations {
    compileOnly {
        extendsFrom(configurations.annotationProcessor.get())
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    compileOnly("org.projectlombok:lombok")
    annotationProcessor("org.projectlombok:lombok")
    testImplementation("org.springframework.boot:spring-boot-starter-test")
}

// 新增Java编译任务配置
tasks.withType<JavaCompile> {
    sourceCompatibility = "11"
    targetCompatibility = "11"
}

tasks.withType<KotlinCompile> {
    kotlinOptions {
        freeCompilerArgs = listOf("-Xjsr305=strict")
        jvmTarget = "11"
    }
}

tasks.withType<Test> {
    useJUnitPlatform()
}

2. 校验目录和包路径

  • Java Controller必须放在src/main/java目录下,Kotlin代码保持在src/main/kotlin目录,两个目录均为项目的源码根目录
  • Java Controller的包名必须和Spring Boot启动类的包名保持同级或子级关系,如果放在其他包下,需要在启动类上添加@ComponentScan(basePackages = ["启动类所在包", "Java Controller所在包"])手动指定扫描路径

3. 额外注意项

你提供的Java Controller示例使用的是@PostMapping("/"),测试时需要用POST请求访问根路径,用GET请求访问也会返回404,注意请求方法和接口定义匹配。

修改完成后刷新Gradle配置,重启项目即可正常访问Java Controller的接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:54:02