1、问题描述
工程启动的时候,报错如下:
nested exception is java.lang.UnsupportedClassVersionError: tech/tablesaw/api/Table : Unsupported major.minor version 52.0 (unable to load class tech.tablesaw.api.Table)
2.问题分析
首先,理解java.lang.UnsupportedClassVersionError
异常,该异常位于java.lang包下,说明是Java编程的基础类异常,UnsupportedClassVersionError
顾名思议,Class类版本不支持错误,既然是版本问题,不外乎就是项目编译Class的JDK版本环境与运行的虚拟机JDK版本环境不一致导致(了解虚拟机原理更容易理解这点),现在问题集中于编译环境与运行环境两个版本谁高谁低。没事,我们再往下分析,根据错误信息还透露出Unsupported major.minor version 52.0
,其中version 52.0
正是对应了JDK1.8的版本。当然,也可以用java -version
命令查看安装JDK版本。说明我们编译环境的JDK是1.8版本,再查到我们的工程环境下,发现工程下的JDK版本为JDK1.7(也许是1.6或1.5等,这里以1.7为例)。
类文件对应的版本如下列表:
JDK版本 | 序号 |
---|---|
Java SE 10 | 54 (0x36 hex) |
Java SE 9 | 53 (0x35 hex) |
Java SE 8 | 52 (0x34 hex) |
Java SE 7 | 51 (0x33 hex) |
Java SE 6.0 | 50 (0x32 hex) |
Java SE 5.0 | 49(0x31 hex) |
JDK 1.4 | 48 (0x30 hex) |
JDK 1.3 | 47 (0x2F hex) |
JDK 1.2 | 46 (0x2E hex) |
JDK 1.1 | 45 (0x2D hex) |
3.解决方案
对于IDEA
1、Ctrl+Alt+S Java Compiler 修改Target bytecode version为1.8
2、Ctrl+Shift+Alt+S project修改project SDK1.8;修改Module SDK为1.8 ;SDKs选择1.8的