Unsupported major

Unsupported major

ID:40574826

大小:331.60 KB

页数:9页

时间:2019-08-04

Unsupported major_第1页
Unsupported major_第2页
Unsupported major_第3页
Unsupported major_第4页
Unsupported major_第5页
资源描述:

《Unsupported major》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Unsupportedmajor.minorversion49.0一:要解决的问题我们在尝鲜JDK1.5的时候,相信不少人遇到过Unsupportedmajor.minorversion49.0错误,当时定会茫然不知所措。因为刚开始那会儿,网上与此相关的中文资料还不多,现在好了,网上一找就知道是如何解决,大多会告诉你要使用JDK1.4重新编译。那么至于为什么,那个major.minor究竟为何物呢?这就是本篇来讲的内容,以使未错而先知。我觉得我是比较幸运的,因为在遇到那个错误之前已研读过《深入Java虚拟机》第二版,英文原书名为《InsidetheJavaVirtua

2、lMachine》(SecondEdition),看时已知晓major.minor藏匿于何处,但没有切身体会,待到与Unsupportedmajor.minorversion49.0真正会面试,正好是给我验证了一个事实。首先我们要对Unsupportedmajor.minorversion49.0建立的直接感觉是:JDK1.5编译出来的类不能在JVM1.4下运行,必须编译成JVM1.4下能运行的类。(当然,也许你用的还是JVM1.3或JVM1.2,那么就要编译成目标JVM能认可的类)。这也解决问题的方向。二:major.minor栖身于何处何谓major.minor,

3、且又居身于何处呢?先感性认识并找到major.minor来。写一个JavaHelloWorld!代码,然后用JDK1.5的编译器编译成,HelloWorld.java1.packagecom.unmi;  2.  3.publicclassHelloWorld  4.{  5.    publicstaticvoidmain(String[]args)  6.    {  7.        System.out.println("Hello,World!");  8.    }  9.}  packagecom.unmi;publicclassHelloWorld{

4、publicstaticvoidmain(String[]args){System.out.println("Hello,World!");}}用JDK1.5的javac-d.HelloWorld.java编译出来的字节码HelloWorld.class用UltraEdit打开来的内容如图所示:从上图中我们看出来了什么是major.minorversion了,它相当于一个软件的主次版本号,只是在这里是标识的一个JavaClass的主版本号和次版本号,同时我们看到minor_version为0x0000,major_version为0x0031,转换为十制数分别为0和4

5、9,即major.minor就是49.0了。三:何谓major.minor以及何用Class文件的第5-8字节为minor_version和major_version。Javaclass文件格式可能会加入新特性。class文件格式一旦发生变化,版本号也会随之变化。对于JVM来说,版本号确定了特定的class文件格式,通常只有给定主版本号和一系列次版本号后,JVM才能够读取class文件。如果class文件的版本号超出了JVM所能处理的有效范围,JVM将不会处理该class文件。在Sun的JDK1.0.2发布版中,JVM实现支持从45.0到45.3的class文件格式。

6、在所有JDK1.1发布版中的JVM都能够支持版本从45.0到45.65535的class文件格式。在Sun的1.2版本的SDK中,JVM能够支持从版本45.0到46.0的class文件格式。1.0或1.2版本的编译器能够产生版本号为45.3的class文件。在Sun的1.2版本SDK中,Javac编译器默认产生版本号为45.3的class文件。但如果在javac命令行中指定了-target1.2标志,1.2版本的编译器将产生版本号为46.0的class文件。1.0或1.1版本的JVM上不能运行使用-target1.2标志所产生的class文件。JVM实现的第二版中修改

7、了对class文件主版本号和次版本号的解释。对于第二版而言,class文件的主版本号与Java平台主发布版的版本号保持一致(例如:在Java2平台发布版上,主版本号从45升至46),次版本号与特定主平台发布版的各个发布版相关。因此,尽管不同的class文件格式可以由不同的版本号表示,但版本号不一样并不代表class文件格式不同。版本号不同的原因可能只是因为class文件由不同发布版本的java平台产生,可能class文件的格式并没有改变。上面三段节选自《深入Java虚拟机》,啰嗦一堆,JDK1.2开启了Java2的时代,但那个年代仍然离我们很远,我们

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。