스프링부트(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는 재앙을 가져올지니...
'Programming > Java,Spring' 카테고리의 다른 글
[ JAVA ] 자바(java) 압축파일 확장자 확인하기(commons compress) (1) | 2017.10.05 |
---|---|
[ JAVA ] 자바[java] Runtime.exec실행시 pipe(pipeline) (|) 버그 (0) | 2017.09.20 |
[ JAVA ] 자바(java) split이용시 주의사항 (0) | 2017.07.19 |
Process와 Thread 정리 (0) | 2017.05.25 |
REST API 바로 알고 사용하기 (0) | 2017.05.25 |