Unresolved reference: java 오류

지프치프·2021년 9월 6일
1

Issue(error)

목록 보기
1/20
post-thumbnail

개요

최근 개인 프로젝트를 위해 프로젝트를 새로 생성하고
Activity를 이동하는 코드를 짜던 중 오류가 발생했다.

startActivity(Intent(this, SecondActivity::class.java))

위 코드에서 .java 부분에서 에러가 발생했는데..

Unresolved reference: java

으응?
라이브러리를 못 찾는 에러는 간간히 발생해서 크게 놀라지는 않았다.
이럴땐 대게 Kotlin 버전을 업데이트 하는 것으로 해결이 되곤 했는데
이 녀석은 그것으로 해결되지 않아서 검색을 좀 해보았다.

kotlin-extension 추가

gradle에서 plugin에 kotlin-extension을 추가하면 된다는 글이 가장 많았다.

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-extension'
}

그래서 추가해봤지만 묵묵부답이다.
게다가 kotlin-extension은 작년에 Deprecated 되었기에
이 방법은 아닌 것 같아서 다른 방법을 찾아보기로 했다.

jdk8 의존 추가

우리의 빛과 소금
스택오버플로우에선 위 방법말고도
"org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" 의존을 추가하라는 방법이 있어서 해보았으나.. 소용이 없었다.

그 외에도 jdk8이 아닌 jdk7로 해야한다는 의견도 있었으나
이 또한 매한가지.

포기하려던 찰나 아무 생각없이 네이버에 검색을 했다가 그 방법을 찾게 되었다.

끝내 해결

이 분께서 해결방법을 블로그에 포스팅 하셨는데
의견이 나와 비슷했다.

이 분이 발견하신 해결법은
ktx의 버전을 다운그레이드 하는 것이다.
프로젝트를 새로 생성하고 gradle에 들어가서 의존 선언 부분으로 내려가보면

implementation 'androidx.core:core-ktx:1.6.0'

버전이 1.6.0으로 되어있다.
이 버전을 1.3.2로 다운그레이드 한 뒤 sync를 해주면
충치마냥 골치거리였던 이 에러를 해결할 수 있다.
이 에러때문에 하루를 날렸다..

왜 발생했던거지?

이건 내 뇌피셜이지만..
아마 코틀린 버전과 라이브러리의 버전이 달라서 그런 거 같다.
프로젝트를 처음 생성했을 때

implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"

이 의존에서 내 코틀린 버전(1.4.32)와 라이브러리의 버전(1.5.10)이 다르다는 Warning을 발견했었는데 처음엔 그저 대수롭지 않게 넘어갔었는데
위 방법을 해보고나니 이 Warning이 생각났다.

그래서 내 코틀린 버전에 맞게 라이브러리 버전을 다운그레이드를 했더니
정상적으로 작동하는 것이 아닌가.. 하는 것이 나의 추측이다.

그럼 반대로 1.5.10으로 모두 맞춰도 되는 것이 아닌가?
해보았지만 이건 안되었다.

구글에 검색해보니 1.5 버전이 이슈가 좀 많은 거 같아서
좀 더 안정화되면 그때 업데이트를 해보는 것이 좋을 거 같다.

개인적으로 공부했던 것을 바탕으로 작성하다보니
잘못된 정보가 있을수도 있습니다.
인지하게 되면 추후 수정하겠습니다.
피드백은 언제나 환영합니다.
읽어주셔서 감사합니다.

profile
지프처럼 거침없는 개발을 하고싶은 개발자

3개의 댓글

comment-user-thumbnail
2021년 9월 22일

이걸로 오류 해결했네요.. 감사합니다

1개의 답글
comment-user-thumbnail
2022년 6월 23일

감사합니다. 위 글로 문제를 해결하였어요.

답글 달기