Java8升级为11后Spring Boot项目Gradle构建及启动找不到类问题求助
问题诱因
- Gradle版本与Java 11不兼容
低于4.10版本的Gradle完全不支持Java 11,5.0以下版本对Java 11的worker进程类加载逻辑存在缺陷,会直接触发worker.org.gradle.process.internal.worker.GradleWorkerMain类找不到的异常。 - Spring Boot版本与Java 11不兼容
Spring Boot 2.1.0版本才正式加入Java 11支持,更低版本的Spring Boot核心依赖和Java 11的JPMS模块系统存在冲突,会导致org.springframework.boot.SpringApplication等核心类加载失败。 - 项目构建参数不匹配
build.gradle中未明确指定sourceCompatibility、targetCompatibility为11,仍沿用Java 8的编译参数,导致编译出的字节码与运行环境的Java 11不兼容,类加载时出现版本校验失败的隐藏异常,最终表现为类找不到。 - Gradle全局配置异常
用户目录下的gradle.properties存在错误的JVM参数配置,比如指定了不存在的javaagent、错误的类路径前缀,会破坏Gradle构建进程的类加载逻辑。
解决步骤
- 升级Gradle版本到兼容Java 11的稳定版,执行命令更新wrapper:
./gradlew wrapper --gradle-version 7.5.1
升级完成后执行./gradlew --version确认版本生效。 - 核对build.gradle配置,明确指定Java编译版本:
sourceCompatibility = 11 targetCompatibility = 11
- 升级Spring Boot版本到2.1.x及以上的稳定版,优先选择2.7.x等长期支持版本,保证和Java 11的兼容性。
- 刷新依赖重新构建,执行命令:
./gradlew clean build --refresh-dependencies - 临时注释掉
~/.gradle/gradle.properties(Windows为%USERPROFILE%/.gradle/gradle.properties)中的自定义JVM参数配置,排除全局配置干扰。
内容的提问来源于stack exchange,提问作者pin34ppl3
相关产品推荐
相关产品推荐

