반응형

스프링부트(springboot)로 카산드라 데이터 모니터링 하는 프로젝트 작업 중  java.lang.NoClassDefFoundError:org/springframework/data/cassandra/mapping/UserTypeResolver 과 같은 에러가 발생해 한참을 해맸다.



Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/data/cassandra/mapping/UserTypeResolver

at java.lang.Class.getDeclaredMethods0(Native Method)

at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)

.

.

생략

Caused by: java.lang.ClassNotFoundException: org.springframework.data.cassandra.mapping.UserTypeResolver

at java.net.URLClassLoader.findClass(URLClassLoader.java:381)

at java.lang.ClassLoader.loadClass(ClassLoader.java:424)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)

at java.lang.ClassLoader.loadClass(ClassLoader.java:357)


일단 해결은 pom.xml 의 <parent>부분의 버전을 수정하여 해결하였다.

<parent>

         <groupId>org.springframework.boot</groupId>

   <artifactId>spring-boot-starter-parent</artifactId>

      <version>1.5.6.RELEASE</version>

        <!-- <version>1.2.3.RELEASE</version> -->

              <relativePath/> <!-- lookup parent from repository -->

</parent>


버전의 1.5.6버전을 하위 dependency에서 사용하는 스프링부트 버전과 맞춰주니 해결되었다. (1.5.6-> 1.2.3)


<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<java.version>1.8</java.version>

<spring-boot.version>1.2.3.RELEASE</spring-boot.version>

<spring-data-cassandra.version>1.2.0.RELEASE</spring-data-cassandra.version>

<spring-cql.version>1.2.0.RELEASE</spring-cql.version>

<datastax.cassandra.version>2.1.7</datastax.cassandra.version>

</properties>


버전이 맞지않으면 예상치 못한 예외가 발생한다. 디텍팅하기도 너무 힘들뿐도로 원인파악이 너무 힘들기 때문에 메이븐 설정을 다른 프로젝트 등에서 가져다 


사용 할때는 버전을 꼭 참고하여 사용하도록 하자. 무작정 사용하는 ctrl+c, ctrl+v는 재앙을 가져올지니...

반응형

+ Recent posts