在J2SE1.4的时候编译的是J2SE1.4的字节码形式,在J2SE5.0是5.0的字节码形式,一般只具有向下兼容性,也就是说在J2SE5.0中可以运行J2SE1.4的字节码,但是反过来则不行,在J2SE1.4下运行了J2SE5.0编译出来的字节码,就会出现上面所说的java.lang.UnsupportedClassVersionError错误了。最后,还要注意一点的是,不仅你的class文件要注意,所有在classpath下用到的lib的jar文件的版本也要注意,如果jar文件里面的class以前是高版本JDK编译出来的字节码形式,那也同样会出java.lang.UnsupportedClassVersionError错误的。
使用JDK1.5编译的程序在JDK1.4下运行,出现Unsupported major.minor version 49.0。48,49是java编译器内部的版本号,48表示的是JDK1.4来编译运行的程序。49是JDK1.5编译运行的程序
解决步骤 :
1、使用java -version查看版本 显示JDK1.5,于是知道错误原因了,使用JDK1.4写的程序调用1.5编译的jar而产生的错误。
2、打开注册表,找到HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft把java development kit中的1.5中的java_home改成1.4对应的路径,以及Java runtime Environment中的Jdk1.5 部分的路径同样设置成jdk1.4 jre对应的路径。
3、再打开cmd窗口,使用 java -version 查看JDK版本,这时候显示1.4说明正常。在当前环境下编译jar.