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

Gradle与Spring Boot升级后bootRun编译失败问题求助

问题描述
  • 原有Spring Boot应用使用Gradle 6.3、Spring Boot 2.3.0.RELEASE、dependency-management 1.0.15.RELEASE,运行正常
  • 升级至Gradle 8.5、Spring Boot 3.2.3、dependency-management 1.1.5后,系统已安装Java 21,./gradlew clean执行成功,但clean build和bootRun命令失败
  • 报错信息:compileJava任务失败,无法解析spring-boot-starter-data-mongodb等依赖,原因是组件兼容Java 17,但项目配置的sourceCompatibility为Java 8
  • 尝试回退旧版本时,提示版本号65不支持,无法正常运行
  • 疑问:是否需要将Gradle 8.5添加到系统环境变量中?

相关配置

build.gradle

plugins {
    id 'org.springframework.boot' version '3.2.3'
    id 'io.spring.dependency-management' version '1.1.5'
    id 'java'
    id 'war'
}

group = 'com.djamware'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:2.4.1'
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }
    testImplementation 'org.springframework.security:spring-security-test'
}

test {
    useJUnitPlatform()
}

gradle-wrapper.properties

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
解决方案
  1. 核心问题:Java版本兼容冲突
    Spring Boot 3.x要求最低Java 17,而项目仍配置sourceCompatibility = '1.8',导致依赖库(如spring-boot-starter-data-mongodb)因基于Java 17编译,无法在Java 8编译环境下解析。

  2. 调整Java版本配置
    修改build.gradle中的Java版本配置,与系统安装的Java 21匹配:

    sourceCompatibility = '21'
    targetCompatibility = '21'
    
  3. Gradle环境变量说明
    不需要将Gradle 8.5添加到系统环境变量。通过./gradlew执行时使用的是Gradle Wrapper,它会自动下载并使用gradle-wrapper.properties中指定的Gradle版本,不受系统环境变量影响。

  4. 回退旧版本失败原因
    回退时提示"版本号65不支持",是因为Java 21对应的class文件版本为65,而旧版Gradle 6.3不支持Java 21。若要回退旧版本,需同时切换到兼容Java 8的JDK版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 14:41:04