[SPRING] java.lang.VerifyError : 클래스 net.sf.cglib.core.DebuggingClassWriter
SPRINGjava.lang.VerifyError : 클래스 net.sf.cglib.core.DebuggingClassWriter
튜토리얼에서 시작된 아주 단순한 Hibernate 코드의 프로토 타입을 만들려고 노력 중이고 cglib2 (전체 스택 추적이이 게시물의 끝 부분에 있음)에서 깊이 이해하지 못하는 오류가 발생했습니다. 나는 아마도 main ()과 bean XML (아래)에서 'productBoProxy'를 만들려고 노력 중이다.
나는 많은 다른 버전의 cglib을 사용하지 않으려 고 노력했다. 이 문제를 해결할 수있는 올바른 길을 찾도록 도와 줄 수있는 누구에게나 매우 감사드립니다.
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>
...
스택 추적 :
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
해결법
-
==============================
1.cglib 및 ASM의 버전이 일치하지 않습니다. Stacktrace는 "net.sf.cglib.core.DebuggingClassWriter가 최종 메소드 방문을 무시합니다"라고 말합니다. org.objectweb.asm.ClassWriter를 확장하는 net.sf.cglib.core.DebuggingClassWriter는 최종 메소드 방문을 무시하려고 시도하지만 물론 실패합니다.
cglib 및 ASM의 버전이 일치하지 않습니다. Stacktrace는 "net.sf.cglib.core.DebuggingClassWriter가 최종 메소드 방문을 무시합니다"라고 말합니다. org.objectweb.asm.ClassWriter를 확장하는 net.sf.cglib.core.DebuggingClassWriter는 최종 메소드 방문을 무시하려고 시도하지만 물론 실패합니다.
예를 들어 cglib 2.2.2에 대한 maven 종속성은 asm 3.3.1을 가져 오므로 이것은 시도해 볼 가치가 있습니다.
from https://stackoverflow.com/questions/9366403/java-lang-verifyerror-class-net-sf-cglib-core-debuggingclasswriter by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] spring-batch와 MultiResourceItemReader로 폴더의 모든 파일을 읽는 방법? (0) | 2019.03.20 |
---|---|
[SPRING] Spring 부트 종속성에서 application.properties 상속 (0) | 2019.03.19 |
[SPRING] Spring, hibernate 및 C3P0 설정으로 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException을 재현하십시오. (0) | 2019.03.19 |
[SPRING] Spring map 요청 매개 변수를 POJO에 자동으로 매핑한다. (0) | 2019.03.19 |
[SPRING] Spring RestTemplate에서 응답을 어떻게 로그합니까? (0) | 2019.03.19 |