[서버][스프링][Kotlin] java.lang.ClassNotFoundException: Cannot find implementation for com.dreamaz.gongga.room.model.RoomMapper
문제 현상
잘 동작하던 Java 코드를 Kotlin으로 변경한 후 REST API를 쓰니 아래의 mapstruct 관련 에러가 발생했습니다.
java.lang.ClassNotFoundException: Cannot find implementation for com.dreamaz.gongga.room.model.RoomMapper
원인
kapt를 추가해도 mapstruct 관련 implementation이 생성되지 않았습니다.
어노테이션 프로세서 쪽에서 뭔가가 잘 안되는 것 같습니다.
*kapt 추가했지만 안됨
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>kapt</id>
<goals>
<goal>kapt</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>src/main/kotlin</sourceDir>
<sourceDir>src/main/java</sourceDir>
</sourceDirs>
<annotationProcessorPaths>
<annotationProcessorPath>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${org.projectlombok.version}</version>
</annotationProcessorPath>
<annotationProcessorPath>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</annotationProcessorPath>
</annotationProcessorPaths>
</configuration>
</execution>
생략
</executions>
생략
</plugin>
해결 방법
IntelliJ에서.. 어째서인지 아직도 빌드/실행 시에 kapt를 포함하지 않습니다.
그래서 annotation proccesor가 필요할 때에는 Maven Project에서 Lifecycle > compile을 클릭하거나 Terminal에 mvn compile을 입력하여 kapt도 수행되도록 해야합니다.
참고
github.com/mapstruct/mapstruct-examples/tree/master/mapstruct-kotlin
kotlinlang.org/docs/reference/kapt.html
[서버][스프링] Mapstruct와 Lombok 동시 사용할 때 주의할 점
stackoverflow.com/questions/47676369/mapstruct-and-lombok-not-working-together
MapStruct and Lombok not working together
Tech Stack being used : Java 8 MapStruct : 1.2.0.Final Lombok: 1.16.18 IDE: IntelliJ - Lombok Plugin already installed Initially, I faced issues when I removed getters and setters and added @Ge...
stackoverflow.com
Using kapt | Kotlin
kotlinlang.org
colinch4.github.io/2020-12-03/kotlin_kapt/
colin's 블로그
개발 강좌 블로그
colinch4.github.io
코틀린을 사용하면 Lombok을 사용할 필요가 없으므로, Lombok을 모두 제거하고 코틀린으로 변경하거나 자바와 코틀린 코드를 별도의 모듈로 분리하여 관리할 수 있다.
뎁스노트 | 코틀린 KAPT를 대체할 KSP 알파 버전 발표.
Kotlin Symbol Processing(KSP) 출시! KAPT 보다 앱 빌드 속도가 2배 빠르다고 합니다. 코틀린 1.4.30 버전부터 호환되구요. KAPT는 어노테이션 처리를 위해 중간에 자바 Stub을 생성하는 반면에 KSP는 코틀린
devsnote.com
Kotlin Symbol Processing(KSP) 출시!
KAPT 보다 앱 빌드 속도가 2배 빠르다고 합니다.
코틀린 1.4.30 버전부터 호환되구요.
KAPT는 어노테이션 처리를 위해 중간에 자바 Stub을 생성하는 반면에
KSP는 코틀린 코드를 직접 파싱하기 때문에 빠르다고 하네요.
github.com/micronaut-projects/micronaut-core/issues/1936
Kotlin Annotation processing not working in IntelliJ (although enabled) · Issue #1936 · micronaut-projects/micronaut-core
Hi there, I am trying to get the intellij build working (without delegating to gradle). Although annotation processing is enabled in intellij and although there is not other annotation processor co...
github.com
youtrack.jetbrains.com/issue/KT-15040
Support Kapt in IDEA build system (JPS) : KT-15040
Reported at https://github.com/griffon/griffon/issues/189 Creating a JavaFX + Kotlin application following the steps described in the starting guide result in a fully working application when ran from the command line. However running from within IntelliJ
youtrack.jetbrains.com
댓글 영역