hibernate 와 apache cxf 를 사용하려던 차에 asm 라이브러리 버젼 충돌이 발생했다.
원인은 hibernate 의 cglib 에서 사용하던 asm 라이브러리 버젼과 apache cxf 에서 사용하는 asm 버젼의 충돌이었다.
hibernate 3.3.2.GA 버젼에서의 pom.xml 을 보면
<!-- javassist is optional, but if defined it should be version 3.9.0 -->
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.9.0.GA</version>
</dependency>
<!-- cglib is optional, but if defined it should be version 2.2 -->
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.2</version>
</dependency>
와 같이 정의되어있다.
javaassist 는 옵션이지만 사용할거면 3.9.0 을 써라. cglib 또한 옵션이지만 사용한다면 2.2 를 써라.
이것의 해결방법은 hibernate 에서 사용하는 cglib 을 의존성이 없는 버젼. 즉 cglib-nodep 버젼을 사용하는 것이다.
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib-nodep</artifactId>
<version>2.2</version>
</dependency>