从Java6升级到Java7最痛恨的问题相信就是Java Verify Error了。Java7中加强了Class文件的安全性检查,结果系统上来一大堆的Verify Error。在这里说说我们系统中遇到哪些Verify Error,以及都是如何解决的:
第一种是Unit Test相关的Verify Error,由mock引起的。这里又分两种情况
1. 是由于Javassit的版本太低,导致mock class不符合Verify规范。这种可以简单通过升级javassit包版本就可以解决。可以到javassit的jira查看具体release fix的问题:https://issues.jboss.org/projects/JASSIST/versions/12320598
2. JDK bug,http://stackoverflow.com/questions/25428317/bad-init-method-call-from-inside-of-a-branch,OpenJDK最起码要7u75版本以后才没有问题。
第二种折腾了我好久麻烦的是我遇到的openjpa enhanced entity class verify error。这个错误非常的奇葩,openjpa是was8.5官方支持的jpa2.0 library。无论如何都不应该出现这个错误。这个问题却出现了我们的系统从WAS7迁移到WAS8.5上面。在本地的websphere没有问题,在服务器上一直报verify error。折腾了一个多礼拜,最后才发现这个问题是因为infrastructure team在Websphere环境中加入了他们自己的monitor系统introscope, 2个java instrument jar有冲突导致的,具体可
Java 7 Upgrade: WAS 7 to 8.5的Verify Error挑战

从Java 6升级到Java 7时遇到的主要问题是Verify Error,这主要是由于Java 7增强了Class文件的安全性检查。文中详细介绍了两种常见的Verify Error场景:一是单元测试相关的错误,由mock引起,可通过升级Javassist库或更新JDK解决;二是OpenJPA增强实体类的Verify Error,这是一个在WAS 7迁移到WAS 8.5时出现的异常,最终发现是由于Introscope监控系统与OpenJPA的jar冲突导致。升级和使用Java 7后的字节码仪器需谨慎,尤其是在有多个仪器包的情况下。
最低0.47元/天 解锁文章
566

被折叠的 条评论
为什么被折叠?



