unsupported major.minor version 解决方法

简介:

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

1221350593.jpg

从上图中我们看出来了什么是 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 的网站上翻腾出我从来都没用过的古董来)

3226308965.png

当然你也可以用其他方法查看版本号,比如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 设置,如图:

4103987148.jpg

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

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

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

目录
相关文章
|
5月前
|
Java
Unsupported major.minor version 52.0
Unsupported major.minor version 52.0
|
3月前
|
SQL 流计算
Missing version in readMessageBegin, old client?"这个错误
Missing version in readMessageBegin, old client?"这个错误【1月更文挑战第22天】【1月更文挑战第107篇】
43 1
no version information available的解决办法
no version information available的解决办法
567 0
|
Java 编译器 应用服务中间件
Unsupported major.minor version 52.0(unable to load class com.xxxxxxx.xxx.xx.xx)
Unsupported major.minor version 52.0(unable to load class com.xxxxxxx.xxx.xx.xx)
112 0
Unsupported major.minor version 52.0(unable to load class com.xxxxxxx.xxx.xx.xx)
|
Java
Drools7.0.0.Final Unsupported major.minor version 52.0异常
Drools7.0.0.Final Unsupported major.minor version 52.0异常
115 0
解决Minimum supported Gradle version is 3.3. Current version is 2.14.1问题
(创建于2017/5/16) 首先要搞懂两个概念,gradle版本和gradle插件版本,比如我现在as升级到了2.3,那么2.3就是gradle版本,2.14.1就是gradle插件版本,这两个概念的一一对应的,而之所以出现这个报错信息,就是因为当前项目的gradle插件版本是2.14.1,而gradle2.3对应的插件版本就是3.3,所以导致了报错。
8286 0
Java_异常_06_ Unsupported major.minor version 52.0
    二、参考资料 1.如何解决Unsupported major.minor version 52.0问题? 2.Unsupported major.minor version 52.0 3. Unsupported major.minor version 52.0解决办法
1136 0