JVMCFRE003 bad major version, offset=6

栏目: Java · 发布时间: 6年前

内容简介:今天Deploy静态资源包到我们Production环境, package中只涉及到静态资源文件, 例如数据库连接信息, SQL查询语句等. 成功部署后, 启动服务报错如下:经过分析和排查, 我们认为是本地RAD(eclipse的一种)的JDK level问题, server上java版本是1.7, Ant打包涉及的source和target均是1.7, 但本地RAD的JDK编译版本是1.8, 将其改为1.7, 打包部署后, 进程正常启动.对这个问题, 网络上普遍的说法是"

今天Deploy静态资源包到我们Production环境, package中只涉及到静态资源文件, 例如数据库连接信息, SQL查询语句等. 成功部署后, 启动服务报错如下:

Exception in thread "main" java.lang.UnsupportedClassVersionError: JVMCFRE003 bad major version; class=support/operations/gtm/iosbackendmanager/BackendManager, offset=6
    at java.lang.ClassLoader.defineClassImpl(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:324)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:155)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:715)
    at java.net.URLClassLoader.access$400(URLClassLoader.java:94)
    at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:1169)
    at java.security.AccessController.doPrivileged(AccessController.java:492)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:598)
    at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:777)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:750)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:341)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:731)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)
</verbosegc>

经过分析和排查, 我们认为是本地RAD(eclipse的一种)的JDK level问题, server上 java 版本是1.7, Ant打包涉及的source和target均是1.7, 但本地RAD的JDK编译版本是1.8, 将其改为1.7, 打包部署后, 进程正常启动.

对这个问题, 网络上普遍的说法是" 是因为我们使用高版本的JDK编译的Java class文件试图在较低版本的JVM上运行 " , 所以解决办法通常都是更改本地JDK编译环境, 很典型的例子是这个: UnsupportedClassVersionError: JVMCFRE003 bad major version in WebSphere AS 7 . 但在这个case里, 我deploy的部分不涉及任何已编译的class.所以在此存在两个疑问:

  1. offset=6是什么意思?
  2. JDK编译环境版本是否会影响静态资源的编译?

这也是第一次使用自动化打包和部署工具(UCD)来部署这一部分. 因为是生产环境, 所以在做这个Change之前还是比较紧张的, 预想的问题主要有两个:

1, Deploy process问题, 2, 静态资源乱码问题.

第一个确实出了一点故障, 没有bin路径的改动, 但在process的步骤里没有选择"allow failure", 所以在复制bin文件夹时会报文件夹为空的错并停止运行. 选上allow failure即可.

2, 乱码问题是一如既往, 而这个版本的更改中更是涉及到了有currency符号: "¤". 所以只能文件以东欧编码ISO-8859-2形式保存. 这还需要更多的调查, 源码对于utf8和其他格式编码的处理逻辑.

这次是预想的问题都没有发生, 反而出现奇奇怪怪的问题, 搞的大家都很紧张, 好在问题已经解决. 不过还需要更多的调查.

how to check the jdk version used to compile a .class file - duplicate


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Flask Web开发实战

Flask Web开发实战

李辉 / 机械工业出版社 / 2018-8-1 / 129

这是一本面向Python程序员的,全面介绍Python Web框架Flask的书。关于本书的详细介绍、相关资源等更多信息可以访问本书的官方主页http://helloflask.com/book了解。 • 国内首本Flask著作,在内容上涵盖完整的Flask Web开发学习路径,在实践上包含完整的Flask Web程序开发流程。同时兼容Python2 .7和Python3.6。 • 内......一起来看看 《Flask Web开发实战》 这本书的介绍吧!

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具