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

Spring Boot启动报Could not find class ConditionalOnJava$JavaVersion错误如何解决

问题根因

报错的核心原因是Spring Boot跨大版本依赖冲突:

  • 项目主Spring Boot版本为2.5.1,属于2.x迭代分支
  • 依赖中强制引入了两次org.springframework.boot:spring-boot-actuator:1.5.14.RELEASE,属于1.x分支版本。两个大版本的Spring Boot底层类结构差异极大,1.x版本的actuator依赖的旧版ConditionalOnJava$JavaVersion类在2.5.1的autoconfigure包中已经调整了结构,所以启动时会抛出类找不到的异常。

修复方案

第一步:解决版本冲突

删除build.gradle中两处重复的低版本actuator依赖:

// 删除health check模块下的这行
implementation 'org.springframework.boot:spring-boot-actuator:1.5.14.RELEASE'
// 同时删除datadog模块下的同一行重复依赖
implementation 'org.springframework.boot:spring-boot-actuator:1.5.14.RELEASE'

替换为和主版本匹配的2.x actuator启动器,无需指定版本,依赖管理插件会自动匹配对应2.5.1的兼容版本:

implementation 'org.springframework.boot:spring-boot-starter-actuator'

第二步:适配指标逻辑

你主类中使用的@ExportMetricReader、@ExportMetricWriter是Spring Boot 1.x版本的特有注解,2.x版本已经废弃了这套指标导出API,可根据你的需求二选一调整:

  • 方案1:保留现有代码逻辑,将整个项目的Spring Boot主版本回退到1.5.x分支,把插件配置中的Spring Boot版本改为1.5.14.RELEASE,所有starter依赖统一使用1.5.x版本即可兼容原有注解。
  • 方案2:保留2.5.1版本,将旧的自定义指标读写逻辑替换为Spring Boot 2.x默认集成的Micrometer指标API,直接使用MeterRegistry即可实现指标上报,无需自定义DemoMetricReaderWriter实现类。

第三步:重新构建

刷新Gradle依赖后重新打包运行,即可解决类缺失报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:54:04