内容简介:今天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.所以在此存在两个疑问:
- offset=6是什么意思?
- 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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python Cookbook
Alex Martelli、Anna Ravenscroft、David Ascher / 高铁军 / 人民邮电出版社 / 2010-5-1 / 99.00元
本书介绍了Python应用在各个领域中的一些使用技巧和方法,从最基本的字符、文件序列、字典和排序,到进阶的面向对象编程、数据库和数据持久化、 XML处理和Web编程,再到比较高级和抽象的描述符、装饰器、元类、迭代器和生成器,均有涉及。书中还介绍了一些第三方包和库的使用,包括 Twisted、GIL、PyWin32等。本书覆盖了Python应用中的很多常见问题,并提出了通用的解决方案。书中的代码和方......一起来看看 《Python Cookbook》 这本书的介绍吧!