zoukankan      html  css  js  c++  java
  • 转贴:关于出现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错误发生了! 
    --------------------------------------------------------------------------------------------------------------------------------
    自己评价:看来选好jdk,tomcat的版本也是很重要的.
                     我的项目也是这个原因,后来我把jdk换成1.5以后,就ok了.

                    因为我的项目的编译可能也是通过jdk 1.5的时候编译的,当从新导到另一个环境中我用的是jdk1.4 自然就不可以了.

  • 相关阅读:
    05-浮动/css
    04-选择器/css
    03-样式表/css
    02-html标签&表格&表单
    01-html基础&标签
    vue分页组件重置到首页问题
    VUE通过索引值获取数据不渲染的问题
    常见IE8兼容性问题及解决
    Ajax
    sea.js模块化工具
  • 原文地址:https://www.cnblogs.com/ericsun/p/2376909.html
Copyright © 2011-2022 走看看