#18 Java 콘솔 메모장 시작 중 만난 IntelliJ 설정 문제

2026. 6. 20. 13:12·Project/Memo Evolution

 

Java 콘솔 메모장을 시작하면서 IntelliJ에서 이상한 문제가 생겼다.

sout을 입력했을 때 System.out.println() 자동완성은 되는데, Scanner에는 빨간줄이 뜨지 않고 import java.util.Scanner; 추천도 나오지 않았다.

처음에는 JDK 문제라고 생각했지만, 확인해보니 단순히 JDK만의 문제는 아니었다.

 

문제 상황

작성한 코드는 다음과 같았다.

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
    }
}

정상이라면 Scanner에 빨간줄이 뜨고, IntelliJ가 다음 import를 추천해야 한다.

import java.util.Scanner;

하지만 실제로는 빨간줄도 없고, import 추천도 나오지 않았다.

즉, IntelliJ가 Java 코드를 제대로 분석하지 않고 있었다.

 

먼저 확인한 것: JDK 설정

Java 프로젝트에서는 JDK 설정이 필요하다.

IntelliJ에서는 메뉴 이름이 SDK로 나오지만, Java 기준으로는 JDK라고 이해하면 된다.

확인 경로는 다음과 같다.

File
→ Project Structure...
→ Project

여기서 SDK가 No SDK로 되어 있으면 Java 기능이 제대로 동작하지 않는다.

정상 예시는 다음과 같다.

SDK: temurin-17

JDK가 잡혀 있어야 IntelliJ가 Java 표준 라이브러리를 인식할 수 있다.

예를 들어 다음 클래스들은 JDK 안에 있다.

String
System
Scanner
List
ArrayList

따라서 JDK가 없으면 자동완성, import 추천, 컴파일, 실행 기능이 제대로 동작하지 않는다.

 

SDK와 JDK 용어 정리

처음에는 SDK와 JDK라는 말이 섞여서 헷갈렸다.

정리하면 다음과 같다.

JDK
→ Java 개발 도구

SDK
→ 개발 도구 묶음을 부르는 일반적인 이름

IntelliJ에서 Project SDK라고 나오는 것은 Java 프로젝트에서는 사실상 JDK를 선택하라는 뜻이다.

즉, 이렇게 이해하면 된다.

IntelliJ의 SDK 설정 = Java에서는 JDK 설정

 

Language level 확인

JDK를 설정한 뒤에는 Language level도 확인했다.

확인 경로는 같다.

File
→ Project Structure...
→ Project

여기서 SDK는 temurin-17인데, Language level이 이상하게 높은 버전으로 되어 있었다.

예를 들면 다음과 같다.

Language level: 26 - No new language features

JDK 17을 사용할 거라면 Language level도 17로 맞추는 것이 좋다.

Language level: 17

JDK 버전과 Language level이 맞지 않으면 프로젝트 설정이 꼬여 보일 수 있다.

 

Highlight 설정 확인

JDK가 설정되어 있는데도 빨간줄이 나오지 않았다.

에디터 오른쪽 위를 보니 OFF가 표시되어 있었다.
이 상태는 코드 분석 또는 하이라이팅이 꺼져 있는 상태였다.

오른쪽 위 OFF를 눌러보면 다음과 비슷한 메뉴가 나온다.

Highlight: None
Syntax
All Problems

여기서 None이면 코드 분석이 꺼진 상태다.

정상적으로 오류 표시와 import 추천을 보려면 다음으로 바꿔야 한다.

All Problems

이 설정이 꺼져 있으면 Java 코드에 문제가 있어도 빨간줄이 보이지 않을 수 있다.

 

Power Save Mode 확인

또 하나 확인할 것은 Power Save Mode다.

확인 경로는 다음과 같다.

File
→ Power Save Mode

이 옵션이 켜져 있으면 IntelliJ가 코드 분석, 자동완성, inspection 기능을 제한할 수 있다.

따라서 자동완성이나 빨간줄이 이상하게 동작하지 않으면 Power Save Mode가 켜져 있는지 확인해야 한다.

 

src 폴더 위치 확인

Java 프로젝트에서는 보통 소스 코드를 src 폴더 안에 둔다.

이번 프로젝트에서 의도한 구조는 다음과 같았다.

java-console-memo/
└─ src/
   └─ Main.java

만약 Main.java가 src 밖에 있거나, IntelliJ가 src를 소스 폴더로 인식하지 못하면 Java 코드 분석이 제대로 되지 않을 수 있다.

일반적으로는 src 폴더를 우클릭해서 다음 메뉴를 선택한다.

Mark Directory As
→ Sources Root

정상적으로 설정되면 src 폴더가 파란색 계열로 표시된다.

 

Sources Root 메뉴가 보이지 않았다

문제는 여기서 끝나지 않았다.

src 폴더를 우클릭했는데 Sources Root 메뉴가 보이지 않았다.

처음에는 메뉴 위치를 잘못 찾은 줄 알았지만, 실제 원인은 따로 있었다.

Project Structure에서 Modules를 확인해보니 다음처럼 나왔다.

Nothing to show

즉, IntelliJ가 현재 프로젝트에 Java 모듈을 하나도 등록하지 않은 상태였다.

모듈이 없으면 IntelliJ 입장에서는 어떤 폴더를 Java 소스 폴더로 다뤄야 하는지 알 수 없다.

그래서 src를 Sources Root로 지정하는 메뉴도 제대로 보이지 않았던 것이다.

 

핵심 원인

최종적으로 문제의 핵심은 다음과 같았다.

JDK는 설치되어 있었지만,
현재 프로젝트에 Java 모듈이 등록되어 있지 않았다.

그래서 IntelliJ는 파일을 단순 텍스트처럼 어느 정도 보여줄 수는 있었지만, Java 프로젝트로 제대로 분석하지 못했다.

그 결과 다음 문제가 발생했다.

Scanner 빨간줄이 안 뜸
import 추천이 안 뜸
Java 오류 분석이 안 됨
Sources Root 설정이 제대로 안 보임

즉, 코드 문제가 아니라 프로젝트 설정 문제였다.

 

해결 방향

이 경우에는 먼저 Java 모듈을 추가해야 한다.

확인 경로는 다음과 같다.

File
→ Project Structure...
→ Modules

여기서 아무것도 없고 Nothing to show가 나온다면, 왼쪽 위 + 버튼을 눌러 모듈을 추가해야 한다.

기존 폴더를 Java 모듈로 등록하려면 다음 순서로 진행한다.

+ 버튼
→ Import Module
→ java-console-memo 폴더 선택
→ Java 모듈로 등록
→ JDK는 temurin-17 선택

모듈이 등록되면 이후에 src 폴더를 Sources Root로 지정할 수 있다.

src 우클릭
→ Mark Directory As
→ Sources Root

이후 IntelliJ가 프로젝트를 Java 프로젝트로 제대로 인식하면 빨간줄, import 추천, 자동완성 기능도 정상적으로 동작한다.

 

정리 체크리스트

나중에 같은 문제가 생기면 아래 순서대로 확인하면 된다.

1. JDK 설정 확인
File → Project Structure → Project → SDK

2. Language level 확인
JDK 버전과 맞는지 확인

3. 오른쪽 위 Highlight 확인
None이 아니라 All Problems인지 확인

4. Power Save Mode 확인
File → Power Save Mode 꺼져 있는지 확인

5. Main.java 위치 확인
java-console-memo/src/Main.java 구조인지 확인

6. src가 Sources Root인지 확인
src 우클릭 → Mark Directory As → Sources Root

7. Sources Root 메뉴가 안 보이면 Modules 확인
File → Project Structure → Modules

8. Modules에 Nothing to show가 나오면 Java 모듈 추가
+ → Import Module → java-console-memo 선택

 

 

실행 과정에서 추가로 확인한 설정

Java 콘솔 메모장을 실행하려고 하면서 IntelliJ 설정 문제를 한 번 더 확인하게 되었다.

처음에는 자동 import나 빨간줄 표시 문제만 봤는데, 실행 단계에서도 빌드 관련 오류가 발생했다.

이번에도 코드 자체의 문제라기보다는 IntelliJ가 Java 프로젝트 구조를 제대로 인식하지 못해서 생긴 문제였다.

실행 시 확인한 오류

Main.java를 작성하고 실행하려고 했을 때 다음과 같은 문제가 있었다.

자동 import가 제대로 안 됨
Scanner 오류 표시가 안 보임
실행 시 빌드 관련 오류 발생

이후에는 다음 메시지도 확인했다.

The output path is not specified for module java-console-memo

이 메시지는 Java 코드를 컴파일한 결과물인 .class 파일을 어디에 저장할지 지정되어 있지 않다는 뜻이다.

 

Compiler output 설정 문제

Java 코드는 바로 실행되는 것이 아니라 먼저 컴파일된다.

Main.java
→ 컴파일
→ Main.class
→ 실행

그런데 IntelliJ에 컴파일 결과물을 저장할 위치가 설정되어 있지 않으면 실행할 수 없다.

그래서 Project Structure에서 Compiler output을 지정해야 했다.

경로는 다음과 같다.

File
→ Project Structure...
→ Project
→ Compiler output

여기에 예를 들어 다음과 같은 폴더를 지정한다.

/Users/woojoo/workspace/Memo Evolution/out

이 설정은 IntelliJ에게 다음을 알려주는 것이다.

Java 파일을 컴파일한 결과물을 이 폴더에 저장해라.

out 폴더의 역할

컴파일 설정을 잡으면 프로젝트에 out 폴더가 생길 수 있다.

이 폴더는 내가 직접 작성하는 소스 코드가 아니다.
IntelliJ가 Java 파일을 컴파일한 결과물을 저장하는 곳이다.

정리하면 다음과 같다.

src
→ 내가 작성하는 Java 소스 코드

out
→ 컴파일된 결과물이 저장되는 폴더

일반적으로 out 폴더는 직접 수정하지 않는다.

소스 코드는 src 안에서 작성하고, out은 IntelliJ가 빌드 결과를 저장하는 공간으로 두면 된다.

 

java-console-memo.iml 파일

설정을 하면서 java-console-memo.iml 파일도 생겼다.

처음에는 이 파일이 내가 만든 파일인지, 지워도 되는 파일인지 헷갈렸다.

.iml 파일은 IntelliJ가 만든 모듈 설정 파일이다.

.iml = IntelliJ Module File

즉, 내가 직접 작성하는 Java 소스 파일이 아니라 IntelliJ가 프로젝트 설정을 기억하기 위해 만든 파일이다.

이 파일 안에는 다음과 같은 정보가 들어 있다.

이 폴더가 Java 모듈이라는 정보
src 폴더가 소스 폴더라는 정보
프로젝트 JDK를 사용한다는 정보

예를 들어 파일 안에는 이런 설정이 있었다.

<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />

이 설정은 다음 의미다.

java-console-memo/src 폴더를 Java 소스 폴더로 인식한다.

 

왜 iml 파일이 생겼을까

처음에는 java-console-memo 폴더가 단순 폴더처럼 존재했다.

하지만 IntelliJ에서 이 폴더를 Java 모듈로 인식하게 만들면서 .iml 파일이 생성되었다.

즉, .iml 파일은 IntelliJ가 다음 정보를 저장하기 위해 만든 것이다.

이 폴더는 Java 모듈이다.
src 폴더는 소스 코드 폴더다.
JDK는 프로젝트 설정을 따른다.

그래서 이 파일이 생겼다는 것은 IntelliJ가 해당 폴더를 단순 폴더가 아니라 Java 모듈로 관리하기 시작했다는 의미로 볼 수 있다.

 

iml 파일을 삭제해도 될까

지금 단계에서는 삭제하지 않는 것이 좋다.

이 파일이 사라지면 IntelliJ가 다시 Java 모듈 정보를 잃을 수 있다.

그러면 다시 다음 문제가 생길 수 있다.

src 폴더 인식 안 됨
자동완성 이상함
import 추천 안 됨
실행 설정 꼬임

따라서 현재처럼 IntelliJ로 Java 학습을 진행하는 동안에는 유지하는 것이 안전하다.

다만 이 파일은 Java 문법이나 메모장 기능과 직접 관련된 코드는 아니다.
IntelliJ가 프로젝트를 어떻게 인식할지 저장하는 설정 파일이다.

 

'Project > Memo Evolution' 카테고리의 다른 글

#20 Java 콘솔 메모장 : String 배열에서 Memo 클래스로 변경하기  (0) 2026.06.21
#19 Java 콘솔 메모장: CRUD기능 구현하기  (0) 2026.06.20
#17 Java 콘솔 메모장 시작하기  (0) 2026.06.20
#16 HTML/CSS/JS 메모장을 React로 고도화 정리  (0) 2026.06.20
#15 컴포넌트 분리와 props 이해하기  (0) 2026.06.20
'Project/Memo Evolution' 카테고리의 다른 글
  • #20 Java 콘솔 메모장 : String 배열에서 Memo 클래스로 변경하기
  • #19 Java 콘솔 메모장: CRUD기능 구현하기
  • #17 Java 콘솔 메모장 시작하기
  • #16 HTML/CSS/JS 메모장을 React로 고도화 정리
sqaxe1
sqaxe1
woojoo-devlog 님의 블로그 입니다.
  • sqaxe1
    Woojoo's Devlog
    sqaxe1
  • 전체
    오늘
    어제
    • 분류 전체보기 (148)
      • Backend (9)
        • Servlet (7)
        • Spring (2)
      • Frontend (1)
      • CS (0)
      • Book (33)
        • 자바 웹 프로그래밍 Next Step (30)
        • 테스트 주도 개발: 고품질 쾌속개발을 위한 TDD.. (1)
        • 성공과 실패를 결정하는 1%의 네트워크 원리 (2)
      • Engineering (0)
        • Testing (0)
      • Infra (6)
        • AWS (6)
      • Java (4)
      • Network (1)
      • 김영한 (28)
        • 자바 입문 (8)
        • 실전 자바 - 기본편 (6)
        • 실전 자바 - 중급편 (10)
        • 실전 자바 - 고급편 (4)
      • Web (39)
        • Web Basics (39)
      • Project (24)
        • NeoSquare (0)
        • Memo Evolution (24)
      • 정보처리기사 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    개발서적
    java
    aws
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
sqaxe1
#18 Java 콘솔 메모장 시작 중 만난 IntelliJ 설정 문제
상단으로

티스토리툴바