[Error] Could not initialize class / Mapstruct Cannot find implementation for

null·2023년 5월 9일
0

Error

목록 보기
1/2

"timestamp": "2023-05-09T05:43:26.718+00:00",
"status": 500,
"error": "Internal Server Error",
"trace": "java.lang.NoClassDefFoundError: Could not initialize class (패키지명).mapper.메퍼명"

"message": "Could not initialize class (패키지명).mapper.메퍼명"
  • 방법1 : lombok 설정 후 mapstruct 설정 (순서 중요)

dependencies {
annotationProcessor 'org.projectlombok:lombok:1.18.20'
annotationProcessor 'org.projectlombok:lombok-mapstruct-binding:0.2.0'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final'
implementation 'org.mapstruct:mapstruct:1.4.2.Final'
}

  • 방법2 : build.gradle 추가

sourceSets {
main.java.srcDirs += "build/generated/sources/annotationProcessor/java/main"
}

  • sourceSets는 Gradle 빌드 시 생성되는 소스 파일 디렉토리를 지정하는 Gradle DSL

  • main 소스셋의 디렉토리에 build/generated/sources/annotationProcessor/java/main 디렉토리를 추가한다는 의미

  • Lombok과 같은 Annotation Processor가 생성한 코드를 소스 코드로 인식하도록 해줍니다
    -> Annotation Processor는 소스 코드 분석 및 코드 생성과 같은 작업을 수행
    -> Lombok은 이러한 기능을 활용하여 Getter, Setter 및 생성자와 같은 반복적인 코드 작성 작업을 자동화
    -> Annotation Processor가 생성한 코드를 컴파일에 포함시켜 Lombok이 정상적으로 동작할 수 있도록 합니다

  • 즉, 이 설정을 추가하면 애노테이션 프로세서가 생성한 소스코드도 컴파일 대상에 포함되어 빌드될 수 있게 됩니다.

0개의 댓글