spring java.lang.VerifyError: 类 net.sf.cglib.core.DebuggingClassWriter
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/9366403/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
java.lang.VerifyError: class net.sf.cglib.core.DebuggingClassWriter
提问by Russ Bateman
I'm trying to prototype some pretty simple Hibernate code originating from a tutorial and am getting an error I don't understand deep in cglib2 (the full stack trace is at the end of this post). I am probably trying to create 'productBoProxy' per my simple main()and bean XML (below).
我正在尝试对源自教程的一些非常简单的 Hibernate 代码进行原型设计,但在 cglib2 中遇到了一个我不明白的错误(完整的堆栈跟踪在本文末尾)。我可能正在尝试根据我的简单main()和 bean XML(如下)创建“productBoProxy” 。
I've tried many different versions of cglib to no avail. I'm very grateful to anyone who can help me find the right path to solving this.
我尝试了许多不同版本的 cglib 都无济于事。我非常感谢任何可以帮助我找到解决此问题的正确途径的人。
App.java:
应用程序.java:
ApplicationContext appContext
= new ClassPathXmlApplicationContext( "resources/config/BeanLocations.xml" );
...
productBo = ( ProductBo ) appContext.getBean( "productBoProxy" );
productBo.save( product, 100 );
Product.xml:
产品.xml:
...
<!-- This is a proxy factory bean; see App.java -->
<bean id="productBoProxy"
class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target" ref="productBo" />
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean>
...
Stack trace:
堆栈跟踪:
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: \
Error creating bean with name 'productBoProxy': \
FactoryBean threw exception on object creation; nested exception is java.lang.VerifyError: \
class net.sf.cglib.core.DebuggingClassWriter overrides final method visit. \
(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:149)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:102)
at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1441)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:248)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1093)
at com.mkyong.App.main(App.java:41)
Caused by: java.lang.VerifyError: class net.sf.cglib.core.DebuggingClassWriter \
overrides final method visit.(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access##代码##0(URLClassLoader.java:58)
at java.net.URLClassLoader.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at net.sf.cglib.core.AbstractClassGenerator.<init>(AbstractClassGenerator.java:38)
at net.sf.cglib.core.KeyFactory$Generator.<init>(KeyFactory.java:127)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:112)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)
at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:69)
at org.springframework.aop.framework.Cglib2AopProxy.createEnhancer(Cglib2AopProxy.java:229)
at org.springframework.aop.framework.Cglib2AopProxy.getProxy(Cglib2AopProxy.java:171)
at org.springframework.aop.framework.ProxyFactoryBean.getProxy(ProxyFactoryBean.java:362)
at org.springframework.aop.framework.ProxyFactoryBean.getSingletonInstance(ProxyFactoryBean.java:316)
at org.springframework.aop.framework.ProxyFactoryBean.getObject(ProxyFactoryBean.java:242)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:142)
... 6 more
回答by Mikko Maunu
You have mismatching versions of cglib and ASM. Stacktrace tells "net.sf.cglib.core.DebuggingClassWriter overrides final method visit", in other words net.sf.cglib.core.DebuggingClassWriter which extends org.objectweb.asm.ClassWriter tries to override final method visit, which of course fails.
您的 cglib 和 ASM 版本不匹配。Stacktrace 告诉“net.sf.cglib.core.DebuggingClassWriter 覆盖最终方法访问”,换句话说,扩展 org.objectweb.asm.ClassWriter 的 net.sf.cglib.core.DebuggingClassWriter 试图覆盖最终方法访问,这当然会失败.
For example maven dependendy for cglib 2.2.2pulls asm 3.3.1, so this is one combination worth of trying.
例如,cglib 2.2.2 的 maven 依赖会拉取 asm 3.3.1,所以这是一种值得尝试的组合。

