遭遇java.lang.UnsupportedClassVersionError

调试一个程序时,出现了UnsupportedClassVersionError。我前几天装过1.4的jdk,为了给以前做的网站做细微的调整,因为该网站的服务器上装的jdk是1.4的版本,以前开发时也配的1.4的环境。上网找到了一片阐述的还可以的文章,直接转过来了。

源连接:http://read.newbooks.com.cn/info/50546.html

出现 java.lang.UnsupportedClassVersionError 错误的原因

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

因为,高版本的 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

有一个名叫 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 上。

同一配置区下的已安装 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 错误发生了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值