2012-02-20 18 views
13

Bir öğreticiden kaynaklanan oldukça basit bir Hazırda kodun prototipini hazırlamaya çalışıyorum ve bir hata alıyorum cglib2'de tam anlamıyorum (tam yığın izi bu gönderinin sonundadır). Muhtemelen basit ana() ve fasulye XML (aşağı) başına 'productBoProxy' oluşturmaya çalışıyorum.java.lang.VerifyError: class net.sf.cglib.core.DebuggingClassWriter

Cglib'in birçok farklı sürümünü boşuna kullanıyorum. Bunu çözmek için doğru yolu bulmama yardımcı olabilecek herkese çok minnettarım.

App.java:

ApplicationContext appContext 
    = new ClassPathXmlApplicationContext("resources/config/BeanLocations.xml"); 
... 
productBo = (ProductBo) appContext.getBean("productBoProxy"); 
productBo.save(product, 100); 

Product.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> 
... 

Yığın izleme:

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$000(URLClassLoader.java:58) 
at java.net.URLClassLoader$1.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 

cevap

48

Sen CGLIB ve ASM uyuşmazlık sürümleri var. Stacktrace, "net.sf.cglib.core.DebuggingClassWriter, son yöntem ziyaretini geçersiz kılar", diğer bir deyişle org.objectweb.asm.ClassWriter 'i genişleten, son yöntem ziyaretini geçersiz kılmaya çalışan net.sf.cglib.core.DebuggingClassWriter komutunu anlatır. başarısız olur.

Örneğin maven dependendy for cglib 2.2.2 asm 3.3.1 çeker, bu nedenle denemenin bir kombinasyonudur.

+0

Teşekkürler. Şehir dışına çıktım ve bu bilgilere dayanarak kodumu yeniden düzenlemek için boş zamanım olmadı. Yaptığım anda, cevabınızı tıklayacağım, vb. –

+0

Bu gerçekten bana çok yardımcı oldu, ben de biraz benzer bir hata alıyorum. – AurA

+0

Benim durumumda, aslında bu hatayı aldım çünkü projemde iki farklı cglib sürümü vardı. Asm'ın farklı versiyonlarına güvendiklerini düşünüyorum. – bischoje

İlgili konular