Spring项目@ComponentScan报错:Java版本兼容问题解决
解决Spring项目中
Unsupported class file major version 64错误 错误原因
错误提示里的Unsupported class file major version 64对应Java 20的类文件版本,而你当前使用的Spring 5.2.24.RELEASE版本不支持Java 20。Spring 5.x系列最高仅兼容到Java 17,Java 17及以上版本需要Spring 6.x及后续版本支持。
解决方案
方案1:降低Java版本到Spring 5.x支持的范围
修改pom.xml中的编译版本配置,将Java版本切换为Spring 5.x支持的8/11/17,示例如下:
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- 这里以Java 17为例,也可以改为11或8 --> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> </properties>
同时需要同步调整本地开发环境的JDK版本、IDE的项目SDK设置,确保和pom配置一致。
方案2:升级Spring版本以支持Java 20
将Spring核心依赖升级到支持Java 20的6.x版本,示例如下:
<!-- spring-core 升级到6.x稳定版 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>6.0.11</version> </dependency> <!-- spring-context 同步升级同版本 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>6.0.11</version> </dependency>
补充:Spring 6.x要求最低Java版本为17,你的Java 20版本完全满足要求。另外建议将老旧的JUnit 3.8.1升级到JUnit 5,避免依赖兼容性问题:
<dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.9.3</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>5.9.3</version> <scope>test</scope> </dependency>
内容的提问来源于stack exchange,提问作者user17788823
相关产品推荐
相关产品推荐

