본문 바로가기

WEB/Spring

[Spring] Userjava.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter 에러, JWT 토큰 생성에러

현재 팀원들과 미니프로젝트를 진행중입니다. 프로젝트는 다음과 같이 진행중입니다.

  • Java 17
  • Spring Boot 3.2.0
  • Gradle

기존의 로그인 방식을 JWT에서 토큰을 생성하는 방식으로 바꾸었고 문제가 발생하였습니다.

문제
java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter

 

build.gradle에 제대로 추가하였고 저번 프로젝트에서 사용한 코드를 재사용했기에 뭐가 문제인지 파악이 힘들었습니다.

 

문제 해결

 

문제 Java8 에서 Java17로 바꾸면서 달라진 점에 있었습니다.

 

Java11 이상에서는 JAXB가 JDK에서 제거되었으므로 Maven 또는 Gradle에서 별도로 추가해줘야 합니다.

 

dependency를 다음과 같이 추가해주었습니다.

 

수정 전

implementation 'io.jsonwebtoken:jjwt:0.9.1'

 

수정 후

implementation 'io.jsonwebtoken:jjwt:0.9.1'
implementation 'com.sun.xml.bind:jaxb-impl:4.0.1'
implementation 'com.sun.xml.bind:jaxb-core:4.0.1'
implementation 'javax.xml.bind:jaxb-api:2.4.0-b180830.0359'

 

 

 

swagger를 사용하여 잘 작동하는것을 확인하였습니다.