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

背景

通过火焰图发现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
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值