본문 바로가기
Android

[ Android Issue ] java.lang.NoClassDefFoundError: Failed resolution of: Ljava/time/LocalDate;

by 중곰 2021. 9. 30.

 

이번에 포스팅 하려는 내용은 날짜 데이터를 요일로 변환하는 과정에 발생된 이슈 내용을 기록하려 합니다.

 

Error Message : java.lang.NoClassDefFoundError: Failed resolution of: Ljava/time/LocalDate;

• 발생된 디바이스 : G5 / API 23

• 변환 날짜 데이터 : "2021-09-30" 

• 결과 요일 : "목요일"

 

1. Date 데이터 요일로 변환 함수

fun convertDateToWeek(date: Date){
	return LocalDate.parse(date).dayofWeek.getDisplayName(TextStyle.FULL, Locale.getDefault())
}

- 에러 발생 : java.lang.NoClassDefFoundError: Failed resolution of: Ljava/time/LocalDate;

- 에러 원인 

  ▸ LocalDate 지원되는 API Version 26 부터 사용 가능하여 발생 

  ▸ Stackoverflow 에서 확인 시 다른 이유도 있었지만, 저의 해결 부분을 공유 드립니다.

 

2. 에러 수정

   //	수정한 내부 로직
  if(Build.VERSION.SDK_INT>= 26){
     return LocalDate.parse(date).dayOfWeek.getDisplayName(TextStyle.FULL, Locale.getDefault())
  }
  else{
     try{
        val sdf = SimpleDateFormat("yyyy-MM-dd")
        val calendar = Calendar.getInstance()
        val mDate: Date = sdf.parse(date)
        calendar.time = mDate

        return SimpleDateFormat("EEEE", Locale.getDefault()).format(mDate.time)
     }
     catch (e: Exception){
        e.printStackTrace()
     }
  }
  return ""

- 수정된 내용 

  ▸ API 26 기준으로 분기

  ▸ Calendar, SimpleDateFormat 을 가지고 로직 수정

 

이렇게 수정하여 API 23에서도 동작 되도록 바꿨습니다.

그런데... 굳이 API 26 기준으로 바꿔도 되었을까 고민이 되네요.. 한번더 고민해보고 내일 가서 수정해야지라고 생각합니다.

 

그럼 여기까지 글을 마치겠습니다.

감사합니다.

반응형