版本问题 -Unsupported major.minor version 49.0
2008-03-23 23:11
519 查看
自从J2SE 5.0出来以后,越来越多的人遇到了Unsupported major.minor version 49.0问题,也就是java.lang.UnsupportedClassVersionError错误。 那到底是怎么一回事呢,这里来稍微分析一下。
JDK编译的时候是把Java的源代码编译为字节码的形式,相信这点大多数人都很清楚。在J2SE1.4的时候编译的是J2SE1.4的字节码形式,在J2SE5.0是5.0的字节码形式,一般只具有向下兼容性,也就是说在J2SE5.0中可以运行J2SE1.4的字节码,但是反过来则不行,在J2SE1.4下运行了J2SE5.0编译出来的字节码,就会出现上面所说的java.lang.UnsupportedClassVersionError错误了。
解决方法自然只有2种,一种是把编译器的版本降低,比如说采用J2SE1.4的编译器把代码重新编译一次,或者在J2SE5.0下采用J2SE1.4兼容的字节码形式进行编译。比如SUN的JDK下,采用-target选项就可以指定1.4或者1.3字节码兼容的形式进行编译了。第二种解决方法就是把运行环境中的Java版本上升,比如换成JRE5.0。在一般真实的项目中,运行环境的版本通常是固定的,采用第一种方法解决的可能性要大一些。
下面来说一下如何来检测你的字节码是不是版本过高什么的。有时候你开发环境用的第三方工具,比如WSAD或者RAD或者别的什么,那里面编译器设置比较复杂,你可能最后已经搞不清楚你的字节码到底是什么版本的JDK编译的了。这个时候你可以另外装两个JDK,一个1.4的,一个5.0的。然后在你的开发环境中写一个Hello World的程序,把编译好的class文件copy过来,分别用1.4和5.0的JDK来运行,如果1.4运行不了,出现java.lang.UnsupportedClassVersionError错误的话,但是5.0可以顺利运行,那说明你开发环境就是用的5.0的编译器,而且用的是5.0字节码的形式,如果1.4可以运行,至少说明你开发环境字节码版本在1.4或者更低版本的形式了。
最后,还要注意一点的是,不仅你的class文件要注意,所有在classpath下用到的lib的jar文件的版本也要注意,如果jar文件里面的class以前是高版本JDK编译出来的字节码形式,那也同样会出java.lang.UnsupportedClassVersionError错误的。
JDK编译的时候是把Java的源代码编译为字节码的形式,相信这点大多数人都很清楚。在J2SE1.4的时候编译的是J2SE1.4的字节码形式,在J2SE5.0是5.0的字节码形式,一般只具有向下兼容性,也就是说在J2SE5.0中可以运行J2SE1.4的字节码,但是反过来则不行,在J2SE1.4下运行了J2SE5.0编译出来的字节码,就会出现上面所说的java.lang.UnsupportedClassVersionError错误了。
解决方法自然只有2种,一种是把编译器的版本降低,比如说采用J2SE1.4的编译器把代码重新编译一次,或者在J2SE5.0下采用J2SE1.4兼容的字节码形式进行编译。比如SUN的JDK下,采用-target选项就可以指定1.4或者1.3字节码兼容的形式进行编译了。第二种解决方法就是把运行环境中的Java版本上升,比如换成JRE5.0。在一般真实的项目中,运行环境的版本通常是固定的,采用第一种方法解决的可能性要大一些。
下面来说一下如何来检测你的字节码是不是版本过高什么的。有时候你开发环境用的第三方工具,比如WSAD或者RAD或者别的什么,那里面编译器设置比较复杂,你可能最后已经搞不清楚你的字节码到底是什么版本的JDK编译的了。这个时候你可以另外装两个JDK,一个1.4的,一个5.0的。然后在你的开发环境中写一个Hello World的程序,把编译好的class文件copy过来,分别用1.4和5.0的JDK来运行,如果1.4运行不了,出现java.lang.UnsupportedClassVersionError错误的话,但是5.0可以顺利运行,那说明你开发环境就是用的5.0的编译器,而且用的是5.0字节码的形式,如果1.4可以运行,至少说明你开发环境字节码版本在1.4或者更低版本的形式了。
最后,还要注意一点的是,不仅你的class文件要注意,所有在classpath下用到的lib的jar文件的版本也要注意,如果jar文件里面的class以前是高版本JDK编译出来的字节码形式,那也同样会出java.lang.UnsupportedClassVersionError错误的。
相关文章推荐
- tomcat 版本错误---Unsupported major.minor version 49.0
- 经典分析--Unsupported major.minor version 49.0的错误解决
- class file has wrong version 49.0, should be 48.0 问题以及Unsupported major.minor version 49.0
- JAX-RS2初探-Unsupported major.minor version 51.0
- linux Jetty安装后启动报错-UnsupportedClassVersionError---Unsupported major.minor version 52.0
- 明白 Unsupported major.minor version 49.0 jdk版本对照表
- 主版本 52 比 51 新, 此编译器支持最新的主版本nsupported major.minor version 52.0
- Unsupported major.minor version 49.0的错误(JDK 编译与运行 版本不匹配)
- Android 工程编译 Unsupported major.minor version 51.0 错误解决方法(JDK版本问题)
- JDK版本不兼容(Unsupported major.minor version 49.0)
- class file has wrong version 49.0, should be 48.0 问题以及Unsupported major.minor version 49.0 .
- jar包对不同JDK版本的兼容性问题:Unsupported major.minor version 52.0
- jdk版本问题(Unsupported major.minor version 52.0)
- 又是48,49JDK版本不兼容(Unsupported major.minor version 49.0)
- 版本问题 Java:Unsupported major.minor version 51.0 (unable to load class . . .
- MAVEN的下载和安装-Unsupported major.minor version 51.0
- Unsupported major.minor version 49.0 问题的解决
- Unsupported major.minor version 49.0 问题的解决
- 解决Unsupported major.minor version 49.0问题
- java-Unsupported major.minor version 52.0错误解决