오류 현상
Gradle을 사용하여 프로젝트를 빌드할 때 다음과 같은 오류가 발생하는 경우가 있습니다.
> Task :compileJava FAILED
Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':compileJava'.
> java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid'
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
이 오류는 Gradle과 Java 버전의 불일치 또는 Lombok과 같은 플러그인의 호환성 문제로 인해 발생할 가능성이 큽니다.
원인 분석
이 오류는 주로 다음과 같은 원인으로 인해 발생합니다:
- Gradle 8.x와 JDK 21의 호환성 문제( Gradle과 Java 버전 불일치)
- JDK 21에서 javac 내부 API가 변경되었고, Gradle 및 일부 플러그인이 이를 참조하려다 충돌 발생
- Lombok과 같은 Annotation Processor 문제
- Lombok이 JDK 21의 내부 API를 잘못 참조하는 경우
이 문제를 해결하려면 JDK 버전을 확인하고, Gradle이 올바른 JDK를 사용하도록 설정한 후, 필요한 경우 Lombok 등의 플러그인 업데이트를 진행해야 합니다.
✅ 해결 방법
1️⃣ 현재 JDK 버전 확인
java -version
출력 결과 예시:
openjdk version "21.0.1" 2024-01-01
만약 JDK 21이 설치되어 있다면, JDK 17로 변경하는 것이 가장 확실한 해결 방법입니다.
2️⃣ JDK 버전 변경 (JDK 17 권장)
📌 SDKMAN을 사용하는 경우
sdk install java 17.0.9-tem
sdk use java 17.0.9-tem
📌 직접 설치하는 경우
- OpenJDK 17 다운로드 후 설치
- JAVA_HOME 환경 변수 변경
- expo🧐 원인 분석 이 오류는 주로 다음과 같은 원인으로 인해 발생합니다: Gradle 8.x와 JDK 21의 호환성 문제 JDK 21에서 javac 내부 API가 변경되었고, Gradle 및 일부 플러그인이 이를 참조하려다 충돌 발생 Lombok과 같은 Annotation Processor 문제 Lombok이 JDK 21의 내부 API를 잘못 참조하는 경우 Gradle과 Java 버전 불일치 Gradle이 예상하는 JDK 버전과 시스템에서 실행 중인 JDK 버전이 다를 경우 이 문제를 해결하려면 JDK 버전을 확인하고, Gradle이 올바른 JDK를 사용하도록 설정한 후, 필요한 경우 Lombok 등의 플러그인 업데이트를 진행해야 합니다. rt JAVA_HOME=/path/to/jdk-17
3️⃣ Gradle이 올바른 JDK를 사용하도록 설정
gradle.properties 파일에 다음을 추가:
org.gradle.java.home=/path/to/jdk-17
또는 실행 시:
export JAVA_HOME=/path/to/jdk-17
./gradlew build --warning-mode all
4️⃣ Lombok 문제 해결 (사용 중인 경우)
만약 Lombok을 사용하고 있다면, build.gradle에서 최신 버전인지 확인하고, annotationProcessor 설정을 점검합니다.
dependencies {
annotationProcessor 'org.projectlombok:lombok:1.18.30' // 최신 버전 확인
compileOnly 'org.projectlombok:lombok:1.18.30'
}
또한, lombok.config 파일에서 javac 관련 설정을 추가할 수도 있습니다.
config.stopBubbling = true
5️⃣ Gradle Wrapper 버전 확인 및 변경
gradle/wrapper/gradle-wrapper.properties 파일에서 Gradle 버전이 8.8 이상인지 확인하고, 필요하면 8.5~8.8로 변경합니다.
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
Gradle 9.0은 아직 미리보기 버전이므로 사용하지 않는 것이 좋습니다.
6️⃣ Gradle 클린 후 재빌드
./gradlew clean
./gradlew build --warning-mode all
lombok버전을 1.18로 설정하니 잘되었다.
'Back-End > build Tools' 카테고리의 다른 글
Gradle 프로젝트 수동 설정에서 Run까지 (0) | 2025.02.09 |
---|---|
Gradle 설치 후 gradle init 프로젝트 초기화 경험 – 기본 템플릿의 한계 (0) | 2025.02.09 |
Windows 환경에서 Gradle 설치 및 설정 가이드 (0) | 2025.02.09 |