[Error] Android - Exception In Initializer Error

김민주·2022년 6월 22일
0
post-custom-banner

0. 에러 코드 이동

위와 같이 Exception in initializer error가 발생했다. 바로 파란색 글씨를 따라 에러 발생 원인을 찾으러 가봤다.
TimelineContent 함수에서 diaryList 변수 사용하면서 발생한 에러였다. 다시 말해, 근본적으로 fatal Exception을 일으킨 것은 diaryList 변수였다.

object DataProvider {
    val now = Calendar.getInstance().time.convertDateToLong()
    val diaryList = listOf(
        Diary(date = now, mood= R.drawable.ic_mood_delight, content = "기분 좋은 하루"),
        Diary(date = now, mood= R.drawable.ic_mood_angry, content = "화가 난 하루"),
        Diary(date = now, mood= R.drawable.ic_mood_enjoy, content = "즐거운 하루"),
        Diary(date = now, mood= R.drawable.ic_mood_gloom, content = "우울한 하루"),
        Diary(date = now, mood= R.drawable.ic_mood_soso, content = "보통 하루"),
        Diary(date = now, mood= R.drawable.ic_mood_tired, content = "피곤한 하루")
    )
}

diaryList는 dummy 데이터였다. 여기서 문제가 발생할 줄 상상도 못했다. 영어 그대로 초기화 문제인가 싶어서 봤지만 역시나 초기화는 잘 되어있었다. 모를땐 구글링이니 빠르게 구글링을 시도했다.

1. Error 구글링

구글에 java.lang.ExceptionInInitializerError로 검색하자 spring 관련 환경설정에 관한 해결책들이 나왔다. 그래서 gradle에서 version이 맞지 않나 싶어 이것저것 해봤는데 gradle 문제가 아닌 것 같았다.

그래서 Android ExceptionInInitializerError를 검색했다. 가장 먼저 Android developer 공식 문서로 들어갔다.

Signals that an unexpected exception has occurred in a static initializer.

해석하면 ExceptionInInitializerErrorstatic 초기화 문제 로 발생한 에러였다. 초기화 과정이나 초기화를 평가(?)하는 과정에서 에러가 발생한 것이다.

2. 코드 고치기

희망을 갖고 다시한번 가장 fatal Exception을 일으킨 diaryList 변수 코드를 살펴보았다.

하지만 역시나 내 눈에 diaryList는 문제가 없었다.😢
DataProvider object에서 diaryList를 가져올 때 속도차가 발생하나? 라는 생각이 들어 lazy로 diaryList를 초기화 시켜보았다. 속도차가 원인인 줄 알고 lazy를 이곳 저곳 사용처마다 붙여보았지만 실패였다.

3. 해결

혹시나 싶어 now = 0L로 바꿔보았다.
결과는
.
.
.
성공이었다..!!
현재 날짜를 가져오기 위한 now에서 문제가 발생했던 것이었다.😭

4. 교훈 & 결론

실제로 사용하지 않을 dummy data에서 error를 잡기 위해 많은 시간을 썼지만.. 다음에 Exception in initializer error가 발생했을 땐 초기화하는 값도 유의있게 보자는 교훈을 얻었다.

이 글을 보시는 분들 중 저와 같이 clean project & rebuild project도 하고 초기화도 잘 한 것 같은데 위와 같은 에러가 발생한다면 초기화하는 값을 살펴보면 좋을 것 같습니다!

Exception in initializer error 발생시 초기화에 사용된 값 확인하자😊

profile
즐거운 개발자 김민주입니다🙂
post-custom-banner

0개의 댓글