解决java.lang.UnsupportedClassVersionError问题和原因

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 错误发生了!

另种解决方法:

 

我在本地编译和调试好的程序一点问题也没有,但是,当我上传到远程服务器的 Tomcat 上一测试就抛异常,我一直也不知道是什么原因。上网搜了一下,知道了症结所在。

问题所在:

      因为,我们在本地使用的编译器和服务器上使用的编译器版本不同所致。

     我在本地上编译使用的 JDk 版本是 jdk5.0, 而远程服务器上的 jdk 的版本是 jdk1.4, 所以我编译的程序在远程就出错。

1.
Jbuilder2006自带了1.5的JDK,但如果你还想继续用JDK1.42,如果只是在Jbuilder2006的 tool->configure->JDKs中添加一个JDK1.42或更低版本,那么即使你只写一个最简单的HelloWorld程 序,Jbuilder2006都会给你报出长长一串错误,编写的代码在Jbuilder2005中也无法运行。JBuilder2006在运行编译工程 时,会针对特定版本的VM进行编译,默认的是Java 2 SDK, v 5.0 And Late,因此,如果工程用的是1.5以下的JDK,碰到都是java.lang.UnsupportedClassVersionError这个错误。
解决的办法其实很简单,只要更改这个选项就行了。具体步骤如下: ---------------------------------------------------------- 1、右键点击工程文件,选择属性(properties), 2、在属性窗口中选择 Build-->Java,在右边的选项中有四个下拉框,就可以看到编译选项了, 3、其中Compiler和Debug Option可以不用管,只在Languege features和Target VM中选择相应的JDK版本就可以了,然后确定,一切OK。 附件中是配置的图片。 ----------------------------------------------------------- 如果在Target VM中选择了All Java SDKs,那么你的class文件在使用JDK1.1的VM上都可以运行(Jbuilder2006帮助中是这么说的,估计没几个人的机子上还在用JDK1.1吧 :-)
2.
Eclipse3.1同样会出现相同的问题,这时候只需要把项目用的JDK与你安装的JDK搞成版本一样就解决了.
步骤:右击你的项目-->属性-->Java Compiler,设置合适的版本!!
 
 
总而言之,就是版本问题,更改下适合的版本就可以了,以2014Myeclipse为例

转载于:https://www.cnblogs.com/mxqh/p/3656332.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值