-
java.lang.IncompatibleClassChangeError: Found class...Android/Error 2023. 9. 16. 18:06반응형
기존에 사용하는 모듈을 외부라이브러리로 분리하고 참조를 하였는데 빌드는 성공하였지만 Runtime 환경에서 해당 라이브러리를 사용하는 부분에 접근시 앱이 죽으면서 아래와 같은 에러가 발생함
java.lang.IncompatibleClassChangeError: Found class com.beust.klaxon.KlaxonJson, but interface was expected (declaration of 'com.beust.klaxon.KlaxonJson' appears in ....
분명 내부코드가 변경되거나 수정된 점이 없고 단지 모듈을 분리해서 jitpack 으로 외부라이브러리로 만들어서 사용하였는데 해당문제가 발생함
해당 문제는 사용하는 쪽의 앱과 라이브러리 모두 com.beust:klaxon(https://github.com/cbeust/klaxon) 를 사용하는데 모듈을 분리한 라이브러리를 jitpack에서 빌드시 사용하는 jdk 버전이 사용하는 앱의 jdk 버전과 다르기 때문에 발생하는 문제였음
아래링크는 모듈을 분리한 외부 라이브러리 입니다.
https://github.com/dealicious-inc/actioncable-client-kotlin
기존에 라이브러리 JVN 버전은 1.8을 사용하고 있었음 (https://jitpack.io/com/github/dealicious-inc/actioncable-client-kotlin/0.0.13/build.log)
현재 라이브러리를 사용하는 앱의 JVM 은 17 버전을 사용하고 있음
jitpack.yml 에서 jdk 를 17버전으로 변경후 빌드를 해서 적용 (https://github.com/dealicious-inc/actioncable-client-kotlin/commit/c39cebfaab7f6623461bc7600fdf159471d34807#diff-1604193a5efbe3735c6ab8b44601ad6e42df52f6834bcc155650e3eef5b3fa94)
JVM 이 17버전으로 빌드된후 라이브러리를 적용(https://jitpack.io/com/github/dealicious-inc/actioncable-client-kotlin/0.0.21/build.log)
라이브러리 적용후에는 정상적으로 작동되는것이 확인 됨
[참고 링크]
https://stackoverflow.com/questions/1980452/what-causes-java-lang-incompatibleclasschangeerror
반응형'Android > Error' 카테고리의 다른 글