kapt 플러그인을 넣고나니 ./gradlew test 명령어 실행이 계속 실패했다.

app 빌드는 되는데 유닛테스트만 안되더라..

 

오류 메세지

Execution failed for task ':app:kaptDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
   > java.lang.reflect.InvocationTargetException (no error message)

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:kaptDebugKotlin'.

...(길어서 생략)...

> Task :common:kaptDebugKotlin FAILED
> e: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
>    at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
>    at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3142)
>    at java.base/java.lang.Class.getConstructor0(Class.java:3347)
>    at java.base/java.lang.Class.newInstance(Class.java:571)
>    at org.jetbrains.kotlin.cli.jvm.plugins.ServiceLoaderLite.loadImplementations(ServiceLoaderLite.kt:51)
>    at org.jetbrains.kotlin.cli.jvm.plugins.ServiceLoaderLite.loadImplementations(ServiceLoaderLite.kt:44)
>    at org.jetbrains.kotlin.kapt3.ClasspathBasedKapt3Extension$loadProcessors$efficientProcessorLoader$1.doLoadProcessors(Kapt3Extension.kt:84)

 

며칠을 삽질한건지..ㅠㅠ 빌드 캐시를 삭제하니 됐다던가 어떻게 해결됐는지는 다 말이 다르던데 나는 자바 버전을 체크해서 dependency에 jaxb를 추가하니 해결됐다. JDK6~9는 JAXB가 내장되어 있어 라이브러리를 추가 할 필요가 없는데 나는 자바 12를 쓰고 있어서 오류가 나는거였다.

    if (JavaVersion.current().ordinal() > JavaVersion.VERSION_1_9.ordinal()) {
        kapt "com.sun.xml.bind:jaxb-core:2.3.0.1"
        kapt "javax.xml.bind:jaxb-api:2.3.1"
        kapt "com.sun.xml.bind:jaxb-impl:2.3.2"

        annotationProcessor "com.sun.xml.bind:jaxb-core:2.3.0.1"
        annotationProcessor "javax.xml.bind:jaxb-api:2.3.1"
    }

다른 방법이 있다면 제보해주시면 정말 감사하겠다.