Magic of Love

java.lang.VerifyError 본문

Software

java.lang.VerifyError

NYA 2014.02.26 17:22

구글링을 더 열심히 할 걸...

소스코드만 열심히 의심했다. ㅠㅠ

라이브러리 A 를 실행파일 B가 디펜던시로 가지고 있었는데,
1) IBM 서버 Java6 에서 수행 시 VerifyError 발생.
2) HP 서버 Java6 에서 수행 시 정상.
2) 로컬 PC에서 Java6, Java7 으로 각각 실행 시에는 정상.
3) 라이브러리 A 소스를 그냥 복사해서 실행파일 쪽에 넣으면 서버에서도 정상.

어쨌든 JVM을 타는 것 같긴 하다.

구글링 결과 VerifyError 발생 원인은 크게 두 가지 인 듯 하다.

1. 컴파일 시 사용한 라이브러리와 런타임 시 사용한 라이브러리의 버전이 달라서 메서드 형태가 다른 경우.

2. 사용한 라이브러리가 상위 버전의 JDK에서 컴파일 된 경우.

일단은 옵션으로 -Xverify:none 를 넣으면 위 에러는 나지 않는데....
아무래도 어느 라이브러리가 JDK 7으로 컴파일 되었는지, 혹은 어느 라이브러리 버전이 안 맞는 건지 찾아봐야 할 듯 하다....
(사용하는 라이브러리 중 mail-1.4.7.jar 가 JDK7 으로 컴파일  된 것을 확인했는데.. 어째 JDK6로 컴파일 된 1.4.5 버전으로 내려도 에러는 동일하다 ㅠㅠ)

아래 링크 참조.
http://stackoverflow.com/questions/16905947/java-lang-verifyerror-when-using-emma-cobertura-on-jdk-1-7

 

아래는 내가 발견한 익셉션.

Exception in thread "main" java.lang.VerifyError: JVMVRFY021 thrown object not throwable; class=*****, method=*****(Ljava/util/Map;)Ljava/util/Map;, pc=116
at java.lang.J9VMInternals.verifyImpl(Native Method)
at java.lang.J9VMInternals.verify(J9VMInternals.java:72)
at java.lang.J9VMInternals.prepare(J9VMInternals.java:433)
at java.lang.Class.getDeclaredConstructors(Class.java:535)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:229)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:962)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:935)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:607)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:925)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:472)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)
at *****(*****.java:20)
Tag
공유하기 링크
0 Comments
댓글쓰기 폼