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

文章目录

  • 背景
  • 原因:
  • 解决方案
    • 方案一
      • 条件:使用idea本身maven的编译命令的话
      • 使用命令编译的话
        • mac怎么查看安装的jdk目录
        • mac怎么修改默认是jdk11
          • 1,evanyang@Evans-MacBook-Pro ~$ vim .bash_profile
            • .添加以下配置,配置两套jDK环境
            • 默认jdk 环境:
            • alias切换JDK版本
            • 切换jdk环境
          • 2,保存文档
          • 3,重启命令行
    • 方法2
  • 查看编译类文件的版本
  • 附:

背景

通过火焰图发现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的编译命令的话

类文件具有错误的版本 55.0, 应为 52.0_第1张图片
修改项目使用的JDK版本为大于或等于依赖包的版本

File -> Project Structure -> Project -> Project SDK
这里对于的jdk换成11
类文件具有错误的版本 55.0, 应为 52.0_第2张图片

使用命令编译的话

./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
类文件具有错误的版本 55.0, 应为 52.0_第3张图片

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"

类文件具有错误的版本 55.0, 应为 52.0_第4张图片

.添加以下配置,配置两套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 切换相应的环境
类文件具有错误的版本 55.0, 应为 52.0_第5张图片

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

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

方法2

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

查看编译类文件的版本

找到class文件的目录,打开文件的右上角就可以看到。
类文件具有错误的版本 55.0, 应为 52.0_第6张图片
类文件具有错误的版本 55.0, 应为 52.0_第7张图片

附:

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

你可能感兴趣的:(java,maven,jdk)