类文件具有错误的版本 55.0, 应为 52.0

2023-11-02

背景

通过火焰图发现logback-classic的1.2.0的版本LogbackMDCAdapter 的put方法使用synchronized解决多线程安全问题,发现其性能特别差。发现最新版本1.4.8版本使用的读写分离方式处理。
于是决定将logback 从1.2.0升级到最新的1.4.8,完了之后编译的时报错“类文件具有错误的版本 55.0, 应为 52.0,请删除该文件或确保该文件位于正确的类路径子目录中。”
在这里插入图片描述

[ERROR] /Users/evanyang/IdeaProjects/xiaoman/shardingsphere/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/command/CommandExecutorTask.java:[19,30] 无法访问ch.qos.logback.classic.Logger
[ERROR]   错误的类文件: /Users/evanyang/.m2/repository/ch/qos/logback/logback-classic/1.4.8/logback-classic-1.4.8.jar(ch/qos/logback/classic/Logger.class)
[ERROR]     类文件具有错误的版本 55.0, 应为 52.0
[ERROR]     请删除该文件或确保该文件位于正确的类路径子目录中。
[ERROR] 
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <args> -rf :shardingsphere-proxy-frontend-core

原因:

上面报错中的55.0是JDK11使用的类文件格式(class file format)的版本号

提示的意思是当面项目使用的类文件格式版本比某个依赖包使用的类文件格式版本低

实际就是指当前项目使用的JDK版本比某个依赖包使用的JDK版本低

解决方案

方案一

条件:使用idea本身maven的编译命令的话

在这里插入图片描述
修改项目使用的JDK版本为大于或等于依赖包的版本

File -> Project Structure -> Project -> Project SDK
这里对于的jdk换成11
在这里插入图片描述

使用命令编译的话

./mvnw -Dcheckstyle.skip=true -Drat.skip=true -Dmaven.javadoc.skip=true -Djacoco.skip=true -DskipITs -DskipTests clean install -T1C

因为我本地默认安装的是1.8版本,只用修改成对应的1.11版本即可
在这里插入图片描述

mac怎么查看安装的jdk目录

最简单的方法可以通过idea,这里会自动弹出你本地安装过的jdk的文件目录
默认jdk的目录

/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home

File -> Project Structure -> Project ->SDKs
在这里插入图片描述

mac怎么修改默认是jdk11

1,evanyang@Evans-MacBook-Pro ~$ vim .bash_profile
# JDK8
export JAVA_8_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home'

# JDK11
export JAVA_11_HOME='/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home'
          
export JAVA_HOME=$JAVA_11_HOME
# export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home^M
alias jdk8="export JAVA_HOME=$JAVA_8_HOME"
alias jdk11="export JAVA_HOME=$JAVA_11_HOME"

在这里插入图片描述

.添加以下配置,配置两套jDK环境
# JDK8
export JAVA_8_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home'

# JDK11
export JAVA_11_HOME='/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home'
默认jdk 环境:
export JAVA_HOME=$JAVA_11_HOME
alias切换JDK版本
alias jdk8="export JAVA_HOME=$JAVA_8_HOME"
alias jdk11="export JAVA_HOME=$JAVA_11_HOME" 
切换jdk环境

使用java -version查看当前的jdk版本
输入jdk8 或者jdk11 切换相应的环境
在这里插入图片描述

2,保存文档
source .bash_profile
3,重启命令行

版本已经切换至jdk11
在这里插入图片描述

方法2

就是降低包冲突的版本了
这里是为了升级包才出现的冲突,降低包版本明显是不可行的

查看编译类文件的版本

找到class文件的目录,打开文件的右上角就可以看到。
在这里插入图片描述
在这里插入图片描述

附:

Major Minor  JDK
  45    3    1(.0.2)
  45    3    1.1
  46    0    1.2
  47    0    1.3
  48    0    1.4
  49    0    5
  50    0    6
  51    0    7
  52    0    8
  53    0    9
  54    0    10
  55    0    11
  56    0    12
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类文件具有错误的版本 55.0, 应为 52.0 的相关文章

  • 无论线程如何,对象是否总是能看到其最新的内部状态?

    假设我有一个带有简单整数计数变量的可运行对象 每次可运行对象运行时该变量都会递增 该对象的一个 实例被提交以在计划的执行程序服务中定期运行 class Counter implements Runnable private int coun
  • 在 String 值之后打印 int 值

    我有以下示例代码 int pay 80 int bonus 65 System out println pay bonus bonus pay 有人可以向我解释一下为什么我得到以下输出 145 6580 您的代码正在从左到右解释表达式 pa
  • 将处理项目移至 Eclipse

    我已经在处理项目上工作了一段时间 现在想将其移至 Eclipse 中 我已经在 Eclipse 环境中安装了 Proclipse 我有很多扩展名为 pde 的文件 然而 Proclipse 文件都以 java 结尾 所有 pde 文件都存在
  • 如何在 Android 中的 Chrome 或 Firefox 等特定浏览器的 Web 视图中加载应用程序

    我是 Android 新手 我正在做一个应用程序 我需要在平板电脑上的 Web 视图中加载现有的应用程序 在平板电脑中 当我使用 Web 视图加载应用程序时 我的应用程序将加载到默认浏览器中 如何在平板电脑上的 Web 视图中的特定浏览器
  • 如何将本机数据库运算符 (postgres ~) 与 JPA 标准生成器一起使用?

    我使用 JPA 2 0 标准构建以下查询 简化 select n from notif n where n message b la 我正在使用 postgresql 数据库 我真的需要 运算符 而不是像 我可以使用与 CriteriaBu
  • 获取Android库中的上下文

    我正在编写一个 Android 应用程序 它的一些功能封装在内部库中 但是 要使此功能发挥作用 库需要一个应用程序上下文的实例 为图书馆提供这种上下文的最佳方式是什么 我看到了一些选择 但没有一个有吸引力 Have my library c
  • Maven WebApp META-INF context.xml

    我正在使用 Maven 3 并且尝试在 webapp 文件夹下添加 META INF 文件夹 所以我正在尝试执行以下操作 src main webapp META INF context xml WEB INF 下面是我的 POM 文件
  • Spring 5.0.3 依赖问题

    升级到 spring 5 0 3 后我遇到以下问题 09 25 29 141 ERROR org jboss msc service fail ServerService Thread Pool 175 MSC000001 Failed t
  • Spring HATEOAS 和 HAL:更改 _embedded 中的数组名称

    我正在尝试使用 Spring HATEOAS 构建符合 HAL 的 REST API 经过一番摆弄后我终于开始工作了mostly正如预期的那样 示例 输出现在看起来像这样 links self href http localhost 808
  • 如何在 Eclipse 中获得完全限定的类名?

    有没有一种快速方法可以在 Eclipse 中单击 Java 类并获取其完全限定名称 或将其复制到剪贴板 2016年6月29日编辑 正如 Jeff 所指出的 您只需要执行以下第二步 1 Double click on the class na
  • Time.valueOf 方法返回错误值

    我使用 Time valueOf 方法将字符串 09 00 00 转换为 Time 对象 如下所示 Time valueOf LocalTime parse 09 00 00 当我调用 getTime 来显示我得到的值时 28800000
  • RxJava android mvp 单元测试 NullPointerException

    我是 mvp 单元测试的新手 我想对演示者进行一个非常基本的测试 它负责登录 我只想断言 view onLoginSuccess 这是演示者代码 public LoginPresenter LoginViewContract loginVi
  • 当类明显存在时,我收到 java.lang.NoClassDefFoundError

    当我尝试在运行时使用该库时 出现以下错误 java lang NoClassDefFoundError com google api client extensions android2 AndroidHttp 我已经将此库添加到我的项目中
  • ActiveMQ JNDI 查找问题

    尝试使用 JNDI 运行以下 ActiveMQ http activemq apache org jndi support html http ActiveMQ 20JNDI 并且我的 jboss server node lib 文件夹中有
  • JPA Web 应用程序管理策略

    我们目前正在开发一个 J2EE Web 应用程序 使用 JPA 作为我们的数据访问层 我们目前正在研究几种不同的策略来在我们的应用程序中利用缓存 Create an EntityManager per request 在请求范围内获取缓存
  • Janusgraph 0.3.2 + HBase 1.4.9 - 无法设置 graph.timestamps

    我在 Docker 容器中运行 Janusgraph 0 3 2 并尝试使用运行 HBase 1 4 9 的 AWS EMR 集群作为存储后端 我可以运行 gremlin server sh 但如果我尝试保存某些内容 我会得到粘贴在下面的堆
  • 从字节数组设置 img src

    我需要设置img src我在对象中拥有的字节数组的属性 img
  • Spring - 如何在不匹配列名的情况下使用 BeanPropertyRowMapper

    我正在开发一个应用程序 该应用程序已使用行映射器从纯 JDBC 转换为 Spring 模板 我遇到的问题是数据库中的列与属性名称不匹配 这阻止我使用BeanPropertyRowMapper容易地 我看到一些关于在查询中使用别名的帖子 这会
  • Proguard 正在破坏我的清洁度。 Gson 和泛型

    我有一个从持久性加载信息的函数 我只是以一种非常简单的方式告诉它的类型 该类称为SharedPreferencesHelper kt所以它是一个真正的生活问题解决者 fun
  • 为什么不能在 if 语句中声明变量?

    以下 Java 代码无法编译 int a 0 if a 1 int b 0 if a 1 b 1 为什么 不能有任何代码路径导致程序将 1 分配给b无需先声明 我突然想到b的变量范围可能仅限于第一个if声明 但后来我不明白为什么 如果我实在

随机推荐

  • JS的几种关键词的查找方法

    1 var i str indexOf 关键词 开始位置 在str中 从 开始位置 开始 查找下一个 关键词 的位置 返回值 下一个 关键词 的第一个字的下标位置 如果找不到就返回 1 如果省略第二个参数 开始位置 默认从0开始找 查找最后
  • Java语言的跨平台性

    Java语言的跨平台性 什么是跨平台性 通过Java语言编写的应用程序在不同的系统平台上都可以运行 原理是什么 只要在需要运行java应用程序的操作系统上 先安装一个Java虚拟机 JVM Java Virtual Machine 即可 由
  • java ssh 访问linux,通过java使用ssh访问远程Linux

    需要做一个监控远程Linux磁盘空间的东西 绞尽脑汁终于发现一个东西 ch ethz ssh2 它可以通过用户名和密码登录可以ssh登录的机器 并且可以执行命令 并将命令显示的东西返回来 上代码了 Java代码 Connection con
  • 用jquery插件实现漂亮的日历效果

  • python爬虫时,将时间戳转换成北京时间、标准格式

    import time timestamp items get created 时间戳 time local time localtime int timestamp 注意 这里的整数不能超过11位数 pub date time strft
  • vue点击按钮次数

    显示点击次数
  • blender常用快捷键+动效制作

    文章目录 1 技术概述 2 技术详述 2 1常用快捷键 2 2镜像循环动画效果 3 遇到的难点和解决办法 难点 解决方法 4 总结 1 技术概述 Blender是一款免费的3D计算机图形软件 可用于创建动画 视觉效果 游戏开发和建筑设计等领
  • 分布式系统之Raft算法

    介绍 Raft是一种为了管理日志复制的分布式一致性算法 Raft 出现之前 Paxos 一直是分布式一致性算法的标准 Paxos 难以理解 更难以实现 Raft 的设计目标是简化 Paxos 使得算法既容易理解 也容易实现 Paxos 和
  • 【opencv学习之二十四】OpenCV滤波处理对比

    OpenCV的邻域滤波处理函数主要都通图像的卷积操作 有 1方框滤波boxFilter 属于线性滤波 其原理是用一个矩阵和一个核矩阵卷积操作 2均值滤波blur 也属于线性滤波 是方框滤波一种归一化后的方框滤波 3高斯滤波GaussianB
  • HTML+CSS+JavaScript+JQuery+Ajax

    HTML 1 DTD定义了HTML和XHTML的语义约束 包括HTML文档中可以出现哪些元素 各元素支持哪些属性等 2 基本的HTML文档 页面内容部分 不要在和之间插入任何内容 不要再和之间插入任何内容 不要在
  • Matlab模糊控制的模糊曲面构成怎么看?

    第一种方法 用matlab自带的模糊控制器 1 在MATLAB命令窗口输入fuzzy 然后在弹出框点 File Import From File 2 在Fuzzy Logic Designer 中点击 View Suface 但是 用这种方
  • VSCode用私钥连服务器

    以前一直用PyCharm 听说VSCode可以连接服务器直接修改文件什么的很方便 于是改用VSCode试试 记录一下自己的具体配置流程 1 安好VSCode后 打开左侧栏的扩展 搜索ssh 安装Remote SSH 2 安装后左侧栏出现远程
  • 【LlamaIndex 教程】一文看懂LlamaIndex用法,为LLMs学习私有知识

    城南 LlamaIndex 教程 一文看懂LlamaIndex用法 为LLMs学习私有知识 我是卷了又没卷 薛定谔的卷的AI算法工程师 陈城南 全网平台同名 担任某大厂的算法工程师 带来最新的前沿AI知识 分享 AI 有趣工具和实用玩法 包
  • vue3实现高德地图多点标注(so easy)

    vue3实现高德地图多点标注 so easy 前言 思路清晰 抽丝剥茧 必要的准备工作 最简单的部分 处理数据之前 最关键的思路 效果 完整代码 前言 非常感谢你能打开这篇博客 我想你一定是遇到了地图多点标注有关的问题 这些问题对你造成一些
  • 04 Java面试题之数组

    一 数组的类型可以为任意类型吗 答 可以是任意类型 二 数组中的元素的类型必须是相同的吗 数组中的元素是有序的吗 答 数组中元素的类型必须是相同的 数组中元素是有序的 索引的顺序 从零开始 三 数组的长度可变不 数组的长度使用哪个属性 答
  • 深度学习|卷积神经网络

    一 卷积神经网络简介 卷积神经网络 Convolutional Neural Network CNN 是一种深度学习神经网络结构 主要用于图像识别 计算机视觉等领域 该结构在处理图像等高维数据时表现出色 因为它具有共享权重和局部感知的特点
  • Yii Framework 开发教程(12) UI 组件 ClipWidget示例

    CClipWidget提供了类似录制 宏 的功能 定义在CClipWidget的init和run之间的内容可以存放在Controller的Clip变量中 然后重新回放到任意其它位置 CClipWidget封装的是CBaseControlle
  • html随机点名函数,利用JS实现课堂随机点名和顺序点名

    1 效果 ScreenGif gif 2 Html代码 随机点名区域 3 JavaScript代码 var i 0 t用来接收setTimeOut 的返回值 var t var st 张三 李四 老王 旺财 铁柱 王八 来福 小明 小红 狗
  • 时域OCT与频域OCT的区别

    时域OCT TD OCT 与频域OCT FD OCT 的最大区别在于信号采集单元 也就是检测器部分 时域 用光电探测器进行点探测 频域 用光谱仪进行光谱的采集 一般多用光栅和线阵CCD阵列为核心的小型光谱仪 按照分光原件不同分的 1 1 g
  • 类文件具有错误的版本 55.0, 应为 52.0

    文章目录 背景 原因 解决方案 方案一 条件 使用idea本身maven的编译命令的话 使用命令编译的话 mac怎么查看安装的jdk目录 mac怎么修改默认是jdk11 1 evanyang Evans MacBook Pro vim ba