'자바/기타'에 해당되는 글 1건

  1. 2017.02.27 [자바] java.lang.VerifyError: Inconsistent stackmap frames 오류 해결 1

배경


운영중인 프로젝트 JDK 버전을 1.6에서 1.7로 버전업하는 작업을 진행하게 되었다. 버전 변경을 위해 pom.xml의 maven-compiler-plugin의 속성인 <source>와 <target>을 1.7로 수정하였고, TC를 수행하였는데 다음과 같은 에러가 발생하였다.



원인


문제는 PowerMock과 JDK 1.7간 버전 충돌이였으며, 그 이유는 JDK 1.7부터 바이트코드를 검증할 때 StackMapTable을 반드시 체크하도록 변경 되었기 때문이다. 이 방식은 기존 바이트코드 검증 방식과 호환성이 유지되지 않는다.


(개인적으로 PowerMock을 통해 static 영역을 mocking 하는 테스트 케이스가 더 문제라 생각한다.)


해결


자바 옵션에 -XX:-UseSplitVerifier 추가하여 해결하였다. 해당 옵션은 기존 방식으로 바이트코드를 검증한다는 의미로서, 사실 해결책이라기 보단 회피 방법이라고 보는 것이 좀 더 적합할 것 같다.

또한 JAVA 8에서는 해당 옵션이 deprecated 되었으니, 최종적으로 PowermockRunner를 사용하는 테스트 케이스를 수정하는 것이 좋을 것 같다.



참고자료



Posted by SungHoon, Park
,