java: 无法访问org.springframework.boot.SpringApplication
由于直接使用的springboot 3.0版本 编译出现如下错误
/usr/local/develop/workplace/shiro/src/main/java/com/style/shiro/ShiroApplication.java:3:32
java: 无法访问org.springframework.boot.SpringApplication
错误的类文件: /usr/local/develop/repository/org/springframework/boot/spring-boot/3.0.2/spring-boot-3.0.2.jar!/org/springframework/boot/SpringApplication.class
类文件具有错误的版本 61.0, 应为 52.0
请删除该文件或确保该文件位于正确的类路径子目录中。
报错信息里所说的类文件版本指的是java class file version,java类文件版本 该版本号与jdk版本号存在对应关系,61.0对应jdk17,52.0对应jdk8。 完整对应关系参见 https://stackoverflow.com/questions/9170832/list-of-java-class-file-format-major-version-numbers
原因是 java类的版本和 jdk版本不匹配
解决办法
-
降低Java类的版本 此处使用springboot版本为3.0.0 降低为2.7.7
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.7</version> <relativePath/> <!-- lookup parent from repository --> </parent>
-
增加jdk的版本 配置项目的jdk 为与Java类匹配的版本 即可 此处是配置为JDK17即可
可使用如下命令查看Java类的版本
#build/classes/com/example/Book.class 替换为对应的类 javap -v build/classes/com/example/Book.class | grep major
