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

升级Spring Boot2.5.6与Gradle7.0后bootRun找不到主类问题求助

解决方案

1. 修正主类配置方式

Spring Boot 2.4+ 对应的Gradle插件已经废弃了bootRun块内直接设置main属性的用法,需替换为mainClass属性,也可以选择将主类配置统一放到全局springBoot块中:

// 方式1:直接在bootRun内修改
bootRun {
    mainClass = 'com.test.TestApplication' // 替换原来的main = 'xxx'配置
    // 其余原有配置保持不变
}

// 方式2:全局配置适配性更强
springBoot {
    mainClass = 'com.test.TestApplication'
}

2. 修复已废弃的compile配置引用

Gradle 7.0已经完全移除了早已标记废弃的compile依赖配置,你当前配置中developmentOnly.extendsFrom compile会导致依赖无法正确被引入,需替换为implementation:

configurations {
    developmentOnly.extendsFrom implementation // 将compile改为implementation
    runtimeClasspath {
        extendsFrom developmentOnly
    }
}

你现有依赖已经全部声明在implementation下,修改后依赖就能正确被识别到pathingJar和运行时classpath中。

3. 补全bootRun的classpath配置

你当前在bootRun的doFirst配置里只添加了sourceSets.main.output.files和pathingJar,遗漏了运行时必需的资源文件路径,建议调整为:

bootRun {
    mainClass = 'com.test.TestApplication'
    dependsOn pathingJar
    doFirst {
        // 完整包含源码输出、资源文件和pathingJar
        classpath = files(sourceSets.main.output, pathingJar.archiveFile)
    }
    // 其余原有配置保持不变
}

4. (可选)验证主类编译结果

先执行一次classes任务,检查build/classes/java/main/com/test/TestApplication.class文件是否存在,确认编译阶段没有遗漏主类。

(可选)排查手段

如果修改后仍然报错,可以执行命令./gradlew bootRun --debug | grep "classpath",查看运行时的classpath列表,确认是否包含build/classes/java/main目录。

修改完以上配置后,再执行clean bootRun -Dspring.profiles.active="some-profile"即可正常启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:15:03