出现java.lang.UnsupportedClassVersionError 错误的缘由

出现java.lang.UnsupportedClassVersionError 错误的缘由,是由于咱们使用高版本的JDK编译的Java class文件试图在较低版本的JVM上运行,所报的错误。java


由于,高版本的JDK生成的class文件使用的格式,可能与低版本的JDK的.class文件格式不一样。这样,低版本的JVM没法解释执行这个.class文件,会抛出java.lang.UnsupportedClassVersionError不支持的Class版本错误。服务器


这个错误尤为在JDK5与JDK5以前的版本上表现明显。由于,JDK5在Java语法上做了很多加强,引入了一些新的.class文件的元素,致使旧版本的JVM没法解释、执行.class文件。即便这个类并无使用任何JDK5的新元素,可是JDK5生成的.class文件,JDK1.4及其之前的JVM都没法辨认!编辑器


因此,目前使用最广的,仍是JDK1.4。不少软件和项目都没法使用JDK5。ide


有一个名叫 Toby Reyelts 的开发人员决定消除 JDK 5.0 编译器限制。结果就是开放源代码的 Retroweaver 项目。Retroweaver 使用 classworking 技术来修改由 JDK 5.0 编译器生成的二进制类表示,以便这些类能够与早期的 JVM 一块儿使用。工具


它经过修改JDK5生成的.class文件,将其变为JVM1.4及以前版本可以运行的.class文件。开放源代码


目前,使用新版本的IDE编辑器可能会形成你遭遇java.lang.UnsupportedClassVersionError 错误。日志


好比,Eclipse3.2+MyEclipse5.0这个新版的IDE工具。进入首选项---Java---编译器,能够看到,默认的编译器依从等级是5.0,这里改成1.4,由于咱们使用的软件须要运行在JDK1.4的JVM上。ip


同一配置区下的已安装JRE中,不要安装JRE,而是安装JDK,指定1.4或1.5的JDK。仍是使用jdk1.4。开发


在MyEclipse----应用服务器下,指定Tomcat5。指定Tomcat使用jdk1.4。编译器


这样,就所有指定使用Jdk1.4来编译和运行程序了。若是所有指定jdk5也是能够的。可是,绝对不可以使用jdk5编译程序,而又在jdk1.4上运行程序,那样将会抛出java.lang.UnsupportedClassVersionError不支持的Class版本错误。


这种状况下,不管是Eclipse生成的war包,仍是ant文件生成war包,都使用jdk5编译,就会在运行时出现错误,该应用程序将没法启动。若是你查看Tomcat的日志文件,将会看到正是java.lang.UnsupportedClassVersionError错误发生了!

相关文章
相关标签/搜索