unsupported major.minor version 解决方法

转载 2013年12月04日 16:28:57
        一直以来都是用jdk1.5,这次重返电信由于其系统是在jdk1.4上编译的,编译的时候出现了unsupported major.minor version49.0的错误,上网查看了一下还是一个很普遍的错误,捣鼓了两天终于捣鼓出一些东西,现分享给大家。

     何谓 major.minor,且又居身于何处呢?先感性认识并找到 major.minor 来。顺便写一段 代码,然后用 JDK 1.5 的编译器编译成class,用UltraEdit或者其他能打开非十进制文件的软件打开此class,见下图:        



 从上图中我们看出来了什么是 major.minor version 了,它相当于一个软件的主次版本号,只是在这里是标识的一个 Java Class 的主版本号和次版本号,同时我们看到 minor_version 为 0x0000,major_version 为 0x0031,转换为十制数分别为0 和 49,即 major.minor 就是 49.0 了。
      现在不妨从 JDK 1.1 到 JDK 1.7 编译器编译出的 class 的默认 minor.major version 吧。(又走到 Sun 的网站上翻腾出我从来都没用过的古董来)

JDK 编译器版本 target 参数 十六进制 minor.major 十进制 minor.major
jdk1.1.8 不能带 target 参数 00 03 00 2D 45.3
jdk1.2.2 不带(默认为 -target 1.1) 00 03 00 2D 45.3
jdk1.2.2 -target 1.2 00 00   00 2E 46.0
jdk1.3.1_19 不带(默认为 -target 1.1) 00 03 00 2D 45.3
jdk1.3.1_19 -target 1.3 00 00   00 2F 47.0
j2sdk1.4.2_10 不带(默认为 -target 1.2) 00 00   00 2E 46.0
j2sdk1.4.2_10 -target 1.4 00 00   00 30 48.0
jdk1.5.0_11 不带(默认为 -target 1.5) 00 00   00 31 49.0
jdk1.5.0_11 -target 1.4 -source 1.4 00 00   00 30 48.0
jdk1.6.0_01 不带(默认为 -target 1.6) 00 00   00 32 50.0
jdk1.6.0_01 -target 1.5 00 00   00 31 49.0
jdk1.6.0_01 -target 1.4 -source 1.4 00 00   00 30 48.0
jdk1.7.0 不带(默认为 -target 1.6) 00 00   00 32 50.0
jdk1.7.0 -target 1.7 00 00   00 33 51.0
jdk1.7.0 -target 1.4 -source 1.4 00 00   00 30 48.0
Apache Harmony 5.0M3 不带(默认为 -target 1.2) 00 00   00 2E 46.0
Apache Harmony 5.0M3 -target 1.4 00 00   00 30 48.0

当然你也可以用其他方法查看版本号,比如javap -verbose XXXX(class名)。

        那么现在如果碰到这种问题该知道如何解决了吧,还会像我所见到有些兄弟那样,去找个 1.4 的 JDK 下载安装,然后用其重新编译所有的代码吗?且不说这种方法的繁琐,而且web应用程序还不一定能成功,其实大可不必如此费神,我们一定还记得 javac 还有个 -target 参数,对啦,可以继续使用 1.5 JDK,编译时带上参数 -target 1.4 -source 1.4 就 OK 啦,不过你一定要对哪些 API 是 1.5 JDK 加入进来的了如指掌,不能你的 class 文件拿到 JVM 1.4 下就会 method not found。目标 JVM 是 1.3 的话,编译选项就用 -target 1.3 -source 1.3 了。

      相应的如果使用 ant ,它的 javac 任务也可对应的选择 target 和 source

<javac target="1.4" source="1.4" ............................/>

如果是在开发中,可以肯定的是现在真正算得上是 JAVA IDE 对于工程也都有编译选项设置目标代码的。例如 Eclipse 的项目属性中的 Java Compiler 设置,如图:




 其实理解 major.minor 就像是我们可以这么想像,同样是微软件的程序,32 位的应用程序不能拿到 16 位系统中执行那样。


如果我们发布前了解到目标 JVM 版本,知道怎么从 java class 文件中看出 major.minor 版本来,就不用等到服务器报出异常才着手去解决,也就能预知到可能发生的问题。


其他时候遇到这个问题应具体解决,总之问题的根由是低版本的 JVM 无法加载高版本的 class 文件造成的,找到高版本的 class 文件处理一下就行了。

eclipse 报错Unsupported major.minor version 52.0

错误详情: 解决办法: 1.确定jdk环境配置 a) 原因:从高版本JDK换成低版本JDK报错Unsupported major.minor version 52.0(major.minor vers...
  • QP1203300848
  • QP1203300848
  • 2016年03月15日 15:01
  • 2132

Unsupported major.minor version 52.0解决办法

1.首先解释一下: stanford parser和jdk版本对应关系 J2SE 8 = 52, J2SE 7 = 51, J2SE 6.0 = 50, J2SE 5.0 = 49, JDK ...
  • superit401
  • superit401
  • 2017年05月25日 19:35
  • 8058

hadoop集成到myeclipse中报错/MapReducePreferencePage : Unsupported major.minor version 51.0解决方案

使用的插件为hadoop-eclipse-plugin-2.6.4.jar,放在了D:\Program Files\MyEclipse\MyEclipse 10\dropins这个目录下,结果重启my...
  • menghuannvxia
  • menghuannvxia
  • 2017年04月13日 16:13
  • 758

eclipse 运行时异常 Unsupported major.minor version 52.0 原因

编程中遇到此异常Unsupported major.minor version 52.0  (1.8jdk jar包与 1.8以下低版本jdk不匹配) 经百度查找原因后,发现是工程中某个jar包的版...
  • tonycoo
  • tonycoo
  • 2016年03月07日 00:14
  • 5460

gradlew编译时出现Unsupported major.minor version 52.0

Android apk命令行编译时,出现如下错误:Unsupported major.minor version 52.0
  • u013398960
  • u013398960
  • 2017年07月06日 09:33
  • 329

Unsupported major.minor version 52.0那点坑

先吐槽一下,eclipse虽然看起来简洁,但是对于android开发者来说在很多方面还是极为的的不利 先说说这个问题的来源,由于更新了最新的SDK,导致出现了 Unsupported major....
  • LGGisKing
  • LGGisKing
  • 2016年07月11日 14:28
  • 5182

报错Unsupported major.minor version 52.0 的解决方法

最近使用android studio的时候编译新建空项目的时候报错Unsupported major.minor version 52.0   应该是配置出问题了  后来发现是使用的jdk版本出了问...
  • harryptter
  • harryptter
  • 2016年08月24日 18:19
  • 2003

maven报错Unsupported major.minor version 52.0

原因:工程里面有用到java8,但是maven使用的默认jdk不是java8。 解决:安装java8,并配置JAVA_HOME等环境变量。...
  • AfirSraftGarrier
  • AfirSraftGarrier
  • 2015年05月24日 23:01
  • 1886

Unsupported major.minor version 51.0 错误处理

今天在发布系统新版本后,启动服务器(包括tomcat跟weblogic)就莫名其妙的报了Unsupported major.minor version 51.0这个错,其中启动tomcat时总是一闪而...
  • sp1203
  • sp1203
  • 2015年07月09日 16:12
  • 986

Unsupported major.minor version 52.0 (unable to load class XXX

更多精彩请阅读 东陆之滇的csdn博客:http://blog.csdn.net/zixiao217 maven项目在服务器上构建时报错(Unsupported major.minor versio...
  • zixiao217
  • zixiao217
  • 2016年10月14日 19:59
  • 6245
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:unsupported major.minor version 解决方法
举报原因:
原因补充:

(最多只允许输入30个字)