IntelliJ Main Class 선택 불가

이건선·2025년 12월 25일

해결

목록 보기
50/58

배경

Spring Boot 프로젝트를 IntelliJ에서 열고 Run Configuration을 설정하려는데, Main class 필드가 빨간색으로 표시되며 클래스를 선택할 수 없었다. 왜 IntelliJ는 이 클래스를 인식하지 못하는 걸까?


개념 분해

Project SDK

  • 역할: IntelliJ IDE가 코드 분석, 자동완성, 문법 검사에 사용하는 Java 버전
  • 위치: File → Project Structure → Project → SDK
  • 영향 범위: IDE 내부 기능에만 영향. 실제 빌드나 실행과는 무관

Gradle JVM

  • 역할: Gradle 빌드 도구 자체를 실행하는 JVM
  • 위치: Settings → Build, Execution, Deployment → Build Tools → Gradle → Gradle JVM
  • 영향 범위: 의존성 다운로드, 컴파일, 빌드 스크립트 실행

Gradle 데몬

  • 역할: 빌드 속도 향상을 위해 백그라운드에서 상주하는 Gradle 프로세스
  • 위치: 시스템 백그라운드에서 자동 실행됨
  • 영향 범위: 한 번 시작되면 해당 JVM 버전으로 계속 유지됨. 설정을 바꿔도 기존 데몬은 영향받지 않음

문제 상황 재현

발생한 오류

> Could not resolve all artifacts for configuration 'classpath'.
  > Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.4.2.
    > Dependency requires at least JVM runtime version 17. This build uses a Java 11 JVM.

인과관계 추적

최초에 JAVA11로 실행했던 것이 원인이 이었다.

IntelliJ의 Project SDK를 Java 17로 설정해도, Gradle 데몬이 이미 Java 11로 실행 중이라면 빌드는 여전히 실패한다. 두 설정은 완전히 별개의 영역이기 때문이다.

JAVA_HOME = Java 11로 설정됨
    ↓
Gradle 데몬이 Java 11로 시작됨
    ↓
Spring Boot 3.4.2 플러그인 다운로드 시도
    ↓
"Java 17 이상 필요" → 의존성 해결 실패
    ↓
프로젝트 빌드 실패 (.class 파일 미생성)
    ↓
IntelliJ가 @SpringBootApplication 클래스 인식 불가
    ↓
Main class 선택 불가능

해결 방법

1단계: 기존 Gradle 데몬 종료

./gradlew --stop

이미 실행 중인 Java 11 기반 데몬을 종료한다.

2단계: Gradle JVM 설정 확인

Settings → Build, Execution, Deployment → Build Tools → Gradle

  • Gradle JVM 항목을 Java 17 이상으로 설정

3단계: 프로젝트 재동기화

  • 우측 Gradle 탭 → 새로고침 버튼(🔄) 클릭
  • 또는 File → Sync Project with Gradle Files

새로운 데몬이 Java 17로 시작되고, Spring Boot 플러그인이 정상적으로 다운로드된다.


핵심 정리

Project SDK ≠ Gradle JVM (완전히 별개의 설정)
Gradle 데몬 = 한 번 시작되면 JVM 버전 고정
설정 변경 후 → ./gradlew --stop 필수
Main class 인식 불가 = 빌드 실패의 증상
오류 메시지는 Build 탭에서 확인
profile
멋지게 기록하자

0개의 댓글