更新记录
- 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
- 创建一个JDK 5的Java项目
- Run Configurations中设置JRE为1.5
- 修改项目的JDK版本为JDK 7
- 运行项目,成功报错!
- 切换Run Configurations的JRE为1.7以上,报错解决!
- 重现二:Tomcat
- 创建一个JDK 5的Java项目
- 创建一个JRE为1.5的tomcat
- 修改项目的JDK版本为JDK 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
也是类似的解决方案。