【发布时间】:2012-01-28 02:48:57
【问题描述】:
您好,我正在使用带有休眠 4.0.0 最终版本的 maven 3.0.3 和 jdk7 更新 2 上的 spring 3.1 运行 maven 测试。
我收到以下错误。
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)
我的 Equals 方法是使用 commons-lang 2.6 中的 EqualsBuilder。 我设置了以下 maven opts
SET MAVEN_OPTS=%MAVEN_OPTS% -XX:-UseSplitVerifier
注意:我的测试在 jdk 1.6 update 29 下工作。
我该如何解决这个问题?似乎设置 -XX:-UseSplitVerifier 仍然会导致错误。
【问题讨论】:
-
我会再次清理并构建所有项目并尝试其他 commons-lang 库。好像有点像这个问题:stackoverflow.com/a/8617057/1064325
-
Hibernate 使用 cglib 并且取决于您如何设置 spring,它也可能使用类似的库,也许他们可能是罪魁祸首。尝试在你的类路径中使用更新版本的 cglib,看看是否满足。
标签: java equals spring-3 java-7 hibernate-4.x