Unsupported major.minor version 51.0解决办法,长期记录各种jdk疑难杂症

本文详细介绍了因低版本JDK运行高版本JDK编译的class文件导致的常见错误,并提供了四种不同场景下的错误重现及解决方案。

更新记录
  • 2019-7-29 新增oracle的报错重现
  • 2019-7-27 重写
  • 2018-7-5 初稿
前言

18年碰到这个错误的时候,折腾了许久,当时就记下博客。后来我发现无论自己,还是是同事或是博友,都经常在这个错误上踩坑。所以有必要梳理下报错的原因并重现报错,以免以后再踩坑。

Version和JDK版本的对应关系:

52.0 -> 8.0
51.0 -> 7.0
50.0 -> 1.6
49.0 -> 1.5

原因

低版本JDK运行高版本JDK编译的class类。
比如说,报错是51.0,说明项目的JDK版本是JDK 7,使用了低于JDK 7的版本去运行该项目。

重现(基于eclipse)
  • 重现一:Java
  1. 创建一个JDK 5的Java项目
  2. Run Configurations中设置JRE为1.5
  3. 修改项目的JDK版本为JDK 7
  4. 运行项目,成功报错!
  5. 切换Run Configurations的JRE为1.7以上,报错解决!
  • 重现二:Tomcat
  1. 创建一个JDK 5的Java项目
  2. 创建一个JRE为1.5的tomcat
  3. 修改项目的JDK版本为JDK 5
  4. 运行项目,成功报错!
  5. Server -> Runtime Environment切换tomcat的JRE为1.7以上,报错解决!(如果使用tomcat插件:那么在Tomcat -> JVMSettings中修改)
  • 重现三:Oracle
    最近在部署生产的一个项目,报了51.0错误,生产tomcat使用的是JDK 6,Oracle驱动jar包为ojdbc7,替换成ojdbc6以下的版本就不会报错了。
    注:Oracle的驱动版本和JDk的对应关系:
    ojdbc14 -> JDK 4
    ojdbc5 -> JDK 5
    ojdbc6 -> JDK 6
  • 重现四:Maven(评论里的做法可以参考下)
补充

这个错误Failed to write core dump. Minidumps are not enabled by default on client versions of Windows也是类似的解决方案。

评论 19
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值