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

文章目录

        • 更新记录
        • 前言
        • Version和JDK版本的对应关系:
        • 原因
        • 重现(基于eclipse)
        • 补充

更新记录

  • 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也是类似的解决方案。

你可能感兴趣的:(Java,tomcat)