Próbuję wykonać prototyp całkiem prostego kodu Hibernate pochodzącego z samouczka i otrzymuję błąd, którego nie rozumiem głęboko w cglib2 (pełna wersja ślad stosu znajduje się na końcu tego posta). Prawdopodobnie próbuję utworzyć "productBoProxy" na mój prosty main() i bean XML (poniżej).java.lang.VerifyError: class net.sf.cglib.core.DebuggingClassWriter
Próbowałem wiele różnych wersji cglib bezskutecznie. Jestem bardzo wdzięczny każdemu, kto może mi pomóc znaleźć właściwą ścieżkę do rozwiązania tego problemu.
App.java:
ApplicationContext appContext
= new ClassPathXmlApplicationContext("resources/config/BeanLocations.xml");
...
productBo = (ProductBo) appContext.getBean("productBoProxy");
productBo.save(product, 100);
product.xml: ślad
...
<!-- 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>
...
Stos:
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
Obfite podziękowania. Byłem poza miastem i nie miałem czasu na przerobienie mojego kodu na podstawie tych informacji. Jak tylko to zrobię, kliknę twoją odpowiedź, uderzę, itd. –
Dzięki temu bardzo mi pomogło, również dostałem nieco podobny błąd. – AurA
W moim przypadku faktycznie dostałem ten błąd, ponieważ miałem dwa różne wersje cglib w moim projekcie. Zakładam, że polegali na różnych wersjach ASM. – bischoje