물에 살고싶은 개발자

error: cannot find symbol DaggerAppComponent 빌드 오류 해결하기 본문

Android

error: cannot find symbol DaggerAppComponent 빌드 오류 해결하기

돼지사랑 2023. 7. 5. 15:46

서론

Android 개발자들이 종종 마주치는 문제에 대해 이야기해보려 합니다. 바로 Dagger라는 의존성 주입 프레임워크를 사용하면서 발생하는 "cannot find symbol DaggerAppComponent" 오류인데요. 이 문제를 해결하는 방법을 함께 알아보도록 하겠습니다.

문제 상황

Android 프로젝트를 진행하던 중, Android Studio에서 다음과 같은 빌드 오류가 발생했습니다:

C:\dev\DH-git\app\src\main\java\kr\co\nanumlotto\app\App.java:18: error: cannot find symbol
import kr.co.nanumlotto.di.DaggerAppComponent;
                          ^
  symbol: class DaggerAppComponent
  location: package kr.co.nanumlotto.di

 

DaggerAppComponent 클래스는 Dagger가 애노테이션(@)을 처리할 때 생성하는 클래스입니다. Dagger가 이 클래스를 찾지 못하면, 대체로 Dagger 설정에 문제가 있다는 것을 의미합니다.

해결 방법

 

문제는 JDK를 JetBrains Runtime (JBR)에서 Amazon Corretto로 바꾸어 해결하였습니다. 이 과정은 아래와 같이 진행하였습니다.

(참고로 저는 오래된 프로젝트라서 Dagger 버전이 낮아 Amazon Corretto 11버전입니다. 각자 환경에 맞게 세팅하세요.)

1. Amazon Corretto 설치: 먼저, Amazon Corretto 홈페이지에서 Amazon Corretto를 다운로드하고 설치합니다.
2. Android Studio에서 JDK 변경: Android Studio를 열고, 상단 메뉴에서 File -> Project Structure...를 선택합니다.
3. SDK Location 선택: Project Structure 대화 상자에서 왼쪽 패널에서 SDK Location을 선택합니다.
4. Gradle JDK 변경: SDK Location 설정 하단에 Gradle Settings라는 파란색 텍스트가 있습니다. 이 텍스트를 클릭하면 새로운 설정 창이 열립니다. 이 창에서 방금 설치한 Amazon Corretto로 Gradle JDK를 변경합니다.

안드로이드 버전이 최신버전에 가깝다면 위 스크린샷 처럼 보인다.

5. 적용 및 확인: 변경 사항을 적용하고, 프로젝트를 재빌드하여 오류가 해결되었는지 확인합니다.


이렇게 하면, JetBrains Runtime에서 발생했던 호환성 문제를 Amazon Corretto로 전환하여 해결할 수 있습니다.


문제 해결 과정

해결 방법을 찾기 전에, 결과적으론 도움이 되지 않았지만, 여러 가지 문제 해결 단계를 거쳤습니다. 

1. Dagger 설정 확인: build.gradle 파일에 Dagger 의존성이 올바르게 추가되어 있는지 확인하였습니다.
2. AppComponent 인터페이스 확인: 인터페이스가 @Component 또는 @Singleton으로 올바르게 주석 처리되어 있고, 필요한 모든 모듈과 의존성을 포함하고 있는지 확인하였습니다.
3. 프로젝트 클린: 모든 빌드 아티팩트를 삭제하고 프로젝트를 전체 재빌드하였습니다.
4. 캐시 무효화 및 재시작: Android Studio의 캐시를 무효화하고 IDE를 재시작하였습니다.
5. 다른 컴파일 오류 확인: 프로젝트에 다른 오류가 없는지 확인하였습니다.
6. 패키지 이름 확인: import 문의 패키지 이름이 AppComponent 인터페이스가 위치한 패키지와 일치하는지 확인하였습니다.
7. .gradle 및 build 디렉토리 삭제: 이러한 디렉토리를 삭제하고 프로젝트를 재빌드하였습니다.

 

결론

JetBrains Runtime은 강력한 도구이지만, 모든 라이브러리와 도구와 항상 호환되지 않을 수 있습니다. 이런 경우, Amazon Corretto와 같은 다른 JDK 배포판으로 전환하면 빌드 문제를 해결할 수 있습니다. 이런 오류를 마주칠 때는 항상 개발 환경을 확인해 보는 것을 잊지 마세요. 문제의 해결책은 그곳에 있을 수도 있습니다.

 

 

Comments