java: class file has wrong version 61.0, should be 55.0

回答 4 浏览 1.5万 2022-12-01

我正在用Java 11和Maven在IntelliJ IDEA上工作。

我试图创建一个JsonTset类,就像截图中看到的那样:在此输入图片描述

但在下面的导入中,构建失败了:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.json.JsonTest;
import org.springframework.boot.test.json.JacksonTester;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

并有错误:

java: cannot access org.springframework.beans.factory.annotation.Autowired
  bad class file: /C:/Users/<username>/.m2/repository/org/springframework/spring-beans/6.0.2/spring-beans-6.0.2.jar!/org/springframework/beans/factory/annotation/Autowired.class
    **class file has wrong version 61.0, should be 55.0**
    Please remove or make sure it appears in the correct subdirectory of the classpath.

我知道这与Java版本有关,但找不到任何可行的解决方案。

使用设置在JAVA_HOME中的Java 11。

我已经尝试过的东西:

  1. 将JDK更新为Java 11。
  2. java -version给出:openjdk version "11.0.17" 2022-10-18 LTS。
  3. 更新IntelliJ中的项目,使其与Java 11一起工作。
  4. 移除 .idea 文件夹。
  5. invalidate caches

有谁知道如何修复混乱的版本吗?

R H 提问于2022-12-01
Spring Framework 6.0及以后的版本需要Java 17。如果您的代码必须使用Java 11,则不能使用Spring Version 6。Thomas Kläger 2022-12-01
是否有办法在较低的java版本中使用Spring框架呢?R H 2022-12-01
使用Spring 5或更旧版本。CrazyCoder 2022-12-01
Spring Framework 5.3是最新的版本,可以与Java 8和Java 11一起使用。目前最新版本是5.3.24。docs.spring.io/spring-framework/docs/5.3.24/reference/html/…。对于Spring Boot也是如此。Spring Boot 3需要Java 17。如果你需要使用Java 11,最新可用的版本是Spring Boot 2.7(2.7.5)。Thomas Kläger 2022-12-01
因此,根据@Thomas Kläger的说法,升级到java 17有帮助。R H 2022-12-04
4 个回答
#1楼 已采纳
得票数 15

你使用的是Spring Framework 6,从Spring 6开始,最小支持的Java版本是Java 17(类版本61是Java 17的类版本)。

正如Spring 6的Spring框架概述中所记载的那样。

As of Spring Framework 6.0, Spring requires Java 17+.

因此,如果你想使用Spring 6,你需要升级到Java 17。如果你想继续使用Java 11,你需要降级到Spring 5.3。

Mark Rotteveel 提问于2022-12-07
Mark Rotteveel 修改于2022-12-09
#2楼
得票数 2

可能是由于Java版本和Spring或Spring Boot之间的不一致。检查你的Spring版本。以下是Spring网站的一个片段。

We are planning to release Spring Boot 3.0 in November 2022. This next major revision will be based on Spring Framework 6.0 and will require Java 17 or above. It will also be the first version of Spring Boot that makes use of Jakarta EE 9 APIs (jakarta.) instead of EE 8 (javax.).

https://spring.io/blog/2022/05/24/preparing-for-spring-boot-3-0

Esmaeil Nikfekr 提问于2022-12-06
Mark Rotteveel 修改于2022-12-07
#3楼
得票数 0

截至目前,在创建一个新的Spring Boot项目时,IntelliJ IDEA会自动使用Spring Boot 3.0--即使你指定它应该使用不兼容的Java版本(即早于Java 17)。要使用2.x版本的Spring Boot,你将需要使用Spring Initializer:

https://start.spring.io/

然后你可以将其提取并加载到IntelliJ中。

jman 提问于2022-12-15
#4楼
得票数 0

我也有同样的问题

当我用17版的java创建项目maven的时候

我有一个问题:Upgrade Module SDK in project settings to 17 or higher I change version SDK to 11

之后,我遇到了一个问题:class file has wrong version 61.0, should be 55.0

这是从spring boot 3.0.1开始的。

显示我已将其改为2.7.3 -->没问题

如图:https://drive.google.com/drive/folders/17nZIDj6Hidg6AhR_0DSqi0bADhvSYyLk

T_T 提问于2023-01-17
T_T 修改于2023-01-17