Unsupported major.minor version 52.0

简单来说,就是执行代码的jdk版本 低于 编译的jdk版本


最后面的52.0是一种叫什么魔码,有各自对应的jdk版本。

其中52.0 对应的就是 jdk1.8版本。


我说一下我碰到错误的场景:

背景:在Eclipse中将maven项目打成jar包,然后放在linux系统上,通过java -jar 的命令运行该jar包。

运行的时候报错:Unsupported major.minor version 52.0

检查一:检查linux系统安装的jdk版本

检查linux系统的jdk版本是1.7,即运行环境的jdk版本 与 我放在linux系统上的编译的jdk版本不一致。

检查二:检查本地Eclispe中项目中的jdk版本,如图:





将图中标注的jdk版本均改为1.7。

检查三:检查pom文件中是否有如下代码:


以上代码是规定maven的编译的jdk版本。

如果有以上代码,则需要注意图中将图中的1.8改为1.7;

如果没有,可以直接运行。如果运行仍报错,则加上如上代码,再次启动。


值得说明是,如果是maven工程,一个模块在中引入了另一个模块的jar包,那么这两个模块的指定的编译jdk版本均需要低于运行环境的jdk版本。<及安装的jdk版本>

----------------------------------------------2--------------------------------------------

stanford parser和jdk版本对应关系

J2SE 8 = 52,
J2SE 7 = 51,
J2SE 6.0 = 50,
J2SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45
Unsupported major.minor version 52.0: 看到Unsupported你是不是会想到jdk高版本能兼容低版本,但是低版本不能兼容高版本,不错,猜对了,其实就是这个意思。这个错误意思是你项目用JDK1.8运行过,现在又在本地的eclipse等开发工具或者本地环境变量为低版本的jdk1.7或者jdk1.6下运行,eclipse会说:“本地jdk版本太低,不支持这个jdk1.8编译过的项目运行”。

你看看你本地是报52还是51或者其他的错。

2.接下来配置这几个地方jdk要一致:

1)看看你系统的jdk环境变量配置的是jdk那个版本

2)Windows—— Preferences——Java——Compiler——设为jdk1.8

3)在此页面的Java——Installed JREs——设为jdk1.8

4)关闭此页面,项目右键(或者core包)——Build Path(也可是Properties)——Configure Build Path——Java Build Path——Libraries下面的JRE System Library改为jdk1.8(此处设置见参考3),保证旁边的Order and Export这个jdk与之相同

5)同页面的Java Compiler选项改为jdk1.8

6)同页面的Project Facets——右侧的Java改为1.8(此项也可以不改)

7)如果上述还不管用的话试试:

修改org.eclipse.wst.common.project.facet.core.xml:
打开项目所在的文件夹,打开.settings文件夹,修改里面的“org.eclipse.wst.common.project.facet.core.xml”文件

如我的路径是:D:\cctv5cms\maven.1490956540309\cms-cms\cms-core\.settings\org.eclipse.wst.common.project.facet.core.xml


本文链接:http://blog.csdn.net/superit401/article/details/72731381

参考1:https://www.zifangsky.cn/600.html

参考2:http://bbs.csdn.net/topics/391873068

参考3:http://www.oschina.net/question/207494_84715

参考4:https://blog.csdn.net/qq_36769100/article/details/78880341



------------------------------3--------------------------------------------

我们在 Eclipse 或者其他 IDE 中运行 Java 工程时,有时会遇到如下问题 : 

java.lang.UnsupportedClassVersionError: 运行的具体类 : Unsupported major.minor version 52.0 (具体版本号,这里可以为其他数值......)

这个问题的根本原因是我们使用低版本的 JRE 去运行高版本 JDK 编译的 class 文件

这个是不兼容的! 

这篇经验就告诉大家如何查看问题的根源和如何解决这个问题!

工具/原料

  • Eclipse

方法/步骤

  1. 先看看出错的情况

    运行类,在控制台,我们看到这样的异常 "Unsupported major.minor version 52.0 "

    Unsupported major.minor version 52.0_第1张图片
  2. 查看工程使用的 JRE 版本

    在工程上右键,点击 "Properties" 菜单项,打开 "Properties" 窗口,点击 "Java Build Path" 可以看到我们使用的 JRE 为 1.6 版本!

    Unsupported major.minor version 52.0_第2张图片
  3. 查看 class 文件对应的 JDK 编译器的版本

    这个需要使用 JAVA 提供给我们的一个工具 javap 

    我们首先找到 class 文件 (通常在工程目录下的 bin 子目录中),然后运行 cmd 打开命令行窗口,定位到 bin 目录即可,运行 javap -verbose 类的完整限定名 

    从运行后的打印结果中我们可以看到 major version : 52 这样的字样,这个表明这个 class 文件是 JDK 1.8 (或称为 8.0) 生成的!

    Unsupported major.minor version 52.0_第3张图片
    Unsupported major.minor version 52.0_第4张图片
    Unsupported major.minor version 52.0_第5张图片
  4. 看看  major version 和 JDK 版本的对应关系

    这个图片来自网络,其稍微有点老了,并没有 major  version : 52 对应的关系,其对应的就是 JDK 1.8 (或称为 8.0)!

    Unsupported major.minor version 52.0_第6张图片
  5. 问题解决方法

    找到问题根源了,解决思路就很简单,将编译工程使用的 JDK 版本和最后运行工程使用的 JRE 版本修改一样就没有问题了!

    我们这里将工程的运行环境 JRE 由 1.6 修改为 1.8 即可!

    然后我们再运行这个类,问题解决!!

    Unsupported major.minor version 52.0_第7张图片
    Unsupported major.minor version 52.0_第8张图片



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