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

Spring Boot项目遇UnsupportedClassVersionError问题求助

问题分析

核心错误是UnsupportedClassVersionError:RestartScopeInitializer类用Java17(类文件版本61.0)编译,但当前运行环境只支持到Java11(版本55.0)。根本原因是项目依赖版本严重混乱:

  • Spring Boot父版本是2.1.13.RELEASE(适配Java8),但手动引入了大量Spring Boot 3.x依赖(3.x要求Java17)
  • Java版本配置冲突:java.version=1.8但maven.compiler.source/target=11
  • 存在重复、版本不一致的Spring Boot核心依赖,还有循环依赖(引入了自身项目依赖)
解决步骤

方案一:统一使用Spring Boot 2.1.13.RELEASE(最稳妥,无需大幅升级Java)

  1. 修正pom.xml的版本配置
    • 统一Java版本为1.8,删除冲突的编译配置:
      <properties>
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
          <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
          <java.version>1.8</java.version>
      </properties>
      
    • 移除所有Spring Boot相关依赖的手动版本号,让父依赖自动管理版本,删除重复依赖和循环依赖:
      <dependencies>
          <!-- Spring Boot starters,无需指定版本 -->
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-web</artifactId>
          </dependency>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-tomcat</artifactId>
              <scope>provided</scope>
          </dependency>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-test</artifactId>
              <scope>test</scope>
          </dependency>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-data-jpa</artifactId>
          </dependency>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-thymeleaf</artifactId>
          </dependency>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-devtools</artifactId>
              <optional>true</optional>
          </dependency>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-mail</artifactId>
          </dependency>
      
          <!-- 第三方依赖保持适配Java8的版本 -->
          <dependency>
              <groupId>com.microsoft.sqlserver</groupId>
              <artifactId>mssql-jdbc</artifactId>
              <version>12.2.0.jre8</version>
          </dependency>
          <dependency>
              <groupId>io.jsonwebtoken</groupId>
              <artifactId>jjwt</artifactId>
              <version>0.9.1</version>
          </dependency>
          <dependency>
              <groupId>org.apache.tomcat</groupId>
              <artifactId>tomcat-catalina-jmx-remote</artifactId>
              <version>8.5.75</version>
          </dependency>
          <dependency>
              <groupId>net.sf.jasperreports</groupId>
              <artifactId>jasperreports</artifactId>
              <version>6.20.1</version>
          </dependency>
          <dependency>
              <groupId>org.apache.poi</groupId>
              <artifactId>poi-ooxml</artifactId>
              <version>5.2.2</version>
          </dependency>
          <dependency>
              <groupId>net.sourceforge.jexcelapi</groupId>
              <artifactId>jxl</artifactId>
              <version>2.6.12</version>
          </dependency>
          <!-- Spring Security适配Spring Boot 2.1.x -->
          <dependency>
              <groupId>org.springframework.security</groupId>
              <artifactId>spring-security-web</artifactId>
              <version>5.1.10.RELEASE</version>
          </dependency>
          <dependency>
              <groupId>org.springframework.security</groupId>
              <artifactId>spring-security-config</artifactId>
              <version>5.1.10.RELEASE</version>
          </dependency>
          <dependency>
              <groupId>javax.transaction</groupId>
              <artifactId>javax.transaction-api</artifactId>
              <version>1.2</version>
          </dependency>
          <dependency>
              <groupId>org.hibernate.javax.persistence</groupId>
              <artifactId>hibernate-jpa-2.0-api</artifactId>
              <version>1.0.1.Final</version>
          </dependency>
          <dependency>
              <groupId>dom4j</groupId>
              <artifactId>dom4j</artifactId>
              <version>1.6.1</version>
          </dependency>
          <dependency>
              <groupId>com.sun.mail</groupId>
              <artifactId>javax.mail</artifactId>
              <version>1.5.6</version>
          </dependency>
          <dependency>
              <groupId>org.jetbrains</groupId>
              <artifactId>annotations</artifactId>
              <version>13.0</version>
          </dependency>
      </dependencies>
      
  2. 清理Maven缓存
    执行命令:mvn clean install -U,强制更新依赖并清理旧编译文件
  3. 确认运行环境Java版本
    检查IDE运行配置、系统JAVA_HOME环境变量,确保使用Java8(与pom配置一致)

方案二:升级到Spring Boot 3.x(需升级Java到17)

如果需要使用Spring Boot 3.x特性,按以下步骤操作:

  1. 修改父依赖版本
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.1.0</version>
        <relativePath/>
    </parent>
    
  2. 修正Java版本配置
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>17</java.version>
    </properties>
    
  3. 替换javax依赖为jakarta
    Spring Boot 3.x使用Jakarta EE,需替换所有javax.*依赖为jakarta.*,例如:
    • javax.transaction-api → jakarta.transaction:jakarta.transaction-api:2.0.1
    • javax.mail → com.sun.mail:jakarta.mail:2.0.1
  4. 清理缓存并重新构建
    执行mvn clean install -U,确保使用Java17运行项目
验证

修改完成后重新运行项目,UnsupportedClassVersionError和ApplicationContextInitializer实例化错误应消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 04:03:10