如何让单元测试在java 7中运行:java.lang.VerifyError:在分支目标处期望一个stackmap帧 [英] How do I get unit test to run in java 7: java.lang.VerifyError: Expecting a stackmap frame at branch target

查看:140
本文介绍了如何让单元测试在java 7中运行:java.lang.VerifyError:在分支目标处期望一个stackmap帧的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好我正在使用maven 3.0.3与hibernate 4.0.0最终版本和jdk7更新2上的弹簧3.1运行maven测试。

Hi I am running a maven test using maven 3.0.3 with hibernate 4.0.0 Final release and spring 3.1 on jdk7 update 2.

我收到以下错误。

Caused by: java.lang.VerifyError: Expecting a stackmap frame at branch target 63 in method ${myDomainClass}.equals(Ljava/lang/Object;)Z at offset 24
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2442)
    at java.lang.Class.getDeclaredMethods(Class.java:1808)
    at org.hibernate.property.BasicPropertyAccessor.getterMethod(BasicPropertyAccessor.java:352)
    at org.hibernate.property.BasicPropertyAccessor.getGetterOrNull(BasicPropertyAccessor.java:331)
    at org.hibernate.property.BasicPropertyAccessor.createGetter(BasicPropertyAccessor.java:314)
    at org.hibernate.property.BasicPropertyAccessor.getGetter(BasicPropertyAccessor.java:310)
    at org.hibernate.internal.util.ReflectHelper.getter(ReflectHelper.java:250)
    at org.hibernate.internal.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.java:229)
    at org.hibernate.mapping.SimpleValue.setTypeUsingReflection(SimpleValue.java:314)
    at org.hibernate.cfg.HbmBinder.bindSimpleId(HbmBinder.java:447)
    at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:380)
    at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:320)
    at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:171)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXml(Configuration.java:3377)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXmlQueue(Configuration.java:3369)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3357)
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1334)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1724)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1775)
    at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:184)
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:314)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)

My Equals方法使用来自commons-lang 2.6的EqualsBuilder。
我设置以下maven opts

My Equals method is using EqualsBuilder from commons-lang 2.6. I set the following maven opts

SET MAVEN_OPTS=%MAVEN_OPTS% -XX:-UseSplitVerifier

阅读 Java 7 JVM verifyError

注意:我的测试在jdk 1.6 update 29下运行。

Note: My test works under jdk 1.6 update 29.

我该如何解决这个问题?似乎设置-XX:-UseSplitVerifier仍会导致错误。

How do I fix this? It seems setting -XX:-UseSplitVerifier still causes the error.

推荐答案

根据 surefire插件文档 MAVEN_OPTS不是由生成的JVM继承的,因此您需要指定 argLine 配置参数-XX:-UseSplitVerifier in maven-surefire-plugin配置元素。

According to surefire plugin documentation MAVEN_OPTS are not inherited by a spawned JVM, so you need to specify argLine config parameter with -XX:-UseSplitVerifier in maven-surefire-plugin configuration element.

这篇关于如何让单元测试在java 7中运行:java.lang.VerifyError:在分支目标处期望一个stackmap帧的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆