반응형

1.4 프로젝트 구조와 컴파일: 소스 작성부터 실행까지 한눈에 보기

Java 프로젝트를 시작하려는데 어디서부터 손대야 할지 막막하신가요? 이 글 하나면, 자바 파일을 만들고 컴파일해서 실행하는 전 과정을 단숨에 이해할 수 있어요!

반응형

 

안녕하세요, 자바 입문자 여러분! 😊 자바라는 언어는 구조적으로 탄탄하고 배우기 좋은 언어지만, 막상 개발을 시작하려고 보면 처음부터 헷갈리는 게 한두 가지가 아니죠. 특히 소스 코드를 어디에 저장하고, 어떻게 컴파일하고, 또 실행은 어떻게 하는지 같은 기본적인 흐름이 제대로 정리되어 있지 않으면 시작부터 멘붕 오기 딱 좋아요. 이번 글에서는 자바 프로젝트의 기본 구조컴파일부터 실행까지의 전체 과정을 아주 쉽게, 그리고 실습 가능한 예제 중심으로 정리해드릴게요. 그럼, 천천히 따라오시죠!

1. 기본 프로젝트 디렉터리 구조 이해하기 📁

자바를 처음 시작하면, "도대체 자바 프로젝트를 어디에 어떻게 구성해야 하지?"라는 고민부터 생기기 마련이에요. 사실 자바는 아주 단순한 구조로도 실행이 가능한 언어지만, 나중에 확장성과 관리까지 고려하면 어느 정도 구조화된 형태가 필요하죠.

💡 자바 기본 디렉터리 구조 예시

폴더/파일명 설명
project-root/ 프로젝트의 최상위 디렉터리
└─ src/ 자바 소스 코드(.java 파일) 저장 폴더
└─ bin/ 컴파일된 .class 파일이 저장되는 폴더

이 구조는 매우 기본적인 형태로, IDE 없이 직접 컴파일/실행할 때도 적합해요. 이후에 Maven, Gradle 같은 빌드 도구를 쓰게 되면 구조가 더 복잡해지지만, 지금은 단순한 것이 좋아요.

  • src/ 폴더 안에 클래스별로 파일을 나누어 작성
  • 컴파일 후 결과물은 bin/ 폴더에 자동으로 생성
  • 폴더 명은 자유롭게 설정 가능하나 관례를 따르는 것이 좋음

정리하자면, src → bin으로 이어지는 단순한 구조만 기억하면, 자바의 세계에 한발 더 들어갈 준비가 된 거예요! 그럼 다음 섹션에서는, 이 안에 들어갈 소스 파일이 어떤 구성인지 알아볼까요?

2. 자바 소스 파일(.java)의 구성 요소 🔤

자바 파일을 하나 열어보면 "public class ~"부터 시작해서, main이라는 단어가 보이고, 중괄호가 잔뜩 있어요. 이걸 처음 보면 “이게 대체 뭔데요?”라는 생각부터 들죠. 그래서 자바 파일의 구조를 이해하는 게 아주 중요해요!

🧩 자바 클래스 파일 기본 구조

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

이제 각 요소를 하나씩 분해해서 설명해볼게요. 너무 어렵지 않게요 😉

구성 요소 설명
public class HelloWorld HelloWorld라는 이름의 클래스 정의. 자바는 클래스 단위로 프로그램을 구성해요.
public static void main(String[] args) 프로그램의 시작점인 메인 메서드. 자바는 여기를 먼저 찾아 실행합니다.
System.out.println() 콘솔에 메시지를 출력하는 명령어예요. 대표적인 출력문이죠.

🔍 주의할 점

  • 클래스 이름과 파일 이름은 반드시 동일해야 해요 (예: HelloWorld.java)
  • 대소문자를 구분하므로 정확히 입력해야 해요!

이제 이 구조만 이해해도 기본적인 자바 파일은 직접 작성해볼 수 있어요. 다음 단계에서는, 이 소스 파일을 컴파일해서 실행 가능한 형태로 만드는 과정을 설명해볼게요!

3. 컴파일: 자바 소스를 바이트코드로 변환하기 ⚙️

우리가 작성한 .java 파일은 바로 실행할 수 없어요. 자바에서는 먼저 이 소스 코드를 컴파일해서 .class라는 형태로 바꿔줘야 하죠. 이게 바로 바이트코드예요! 컴파일은 이 작업을 자동으로 해주는 과정입니다.

🔧 자바 컴파일 명령어 예시

javac -d bin src/HelloWorld.java

이 명령은 src 폴더에 있는 자바 파일을 컴파일해서 bin 폴더에 .class 파일로 저장하라는 의미예요.

옵션 설명
javac Java Compiler, 자바 파일을 컴파일할 때 사용하는 명령어
-d bin 컴파일된 결과 파일을 저장할 디렉토리 지정
src/HelloWorld.java 컴파일할 소스 파일 경로

📌 컴파일 성공 시 구조

  • src/HelloWorld.javabin/HelloWorld.class로 생성됨
  • .class 파일은 JVM에서 읽을 수 있는 중간 코드 (기계어 아님!)

컴파일 과정이 익숙해지면, 여러 개의 파일도 한꺼번에 컴파일할 수 있고, 자동화 도구나 IDE에서도 손쉽게 할 수 있어요. 하지만 처음엔 꼭 명령어 기반으로 연습해보세요! 자바의 구조와 흐름을 몸으로 익힐 수 있거든요. 😊

4. 실행: JVM으로 클래스 파일 실행하기 🚀

컴파일이 끝나면 .class 파일이 생기죠. 이제 이걸 실행하면 프로그램이 동작하게 돼요. 자바 프로그램은 JVM(Java Virtual Machine)이라는 가상 머신 위에서 실행됩니다. 즉, JVM이 자바 바이트코드를 읽고 해석해서 실제 운영체제에서 동작하게 만들어줘요.

🎯 자바 실행 명령어 예시

java -cp bin HelloWorld

이 명령어는 bin 폴더에 있는 HelloWorld.class 파일을 실행해달라는 의미예요. java 명령어는 JVM을 호출하는 거고, -cp는 클래스 경로(classpath)를 지정해주는 옵션이에요.

명령어 요소 의미
java JVM을 호출해서 실행을 시작하는 명령
-cp bin 컴파일된 클래스 파일이 저장된 경로를 classpath로 지정
HelloWorld 실행할 클래스 이름(확장자 .class는 생략)

🚨 주의할 점

  • 클래스 경로에 해당 클래스가 정확히 포함되어야 실행이 돼요.
  • 클래스 이름만 쓰고 .class 확장자는 쓰면 안 돼요!

실행에 성공하면 여러분은 콘솔에서 Hello, World! 메시지를 볼 수 있어요! 그럼 이제 다음 단계에서는 이 모든 과정을 터미널에서 직접 실습해보는 흐름을 정리해드릴게요. 직접 손으로 해보는 게 제일 빨리 느는 법이니까요. 🧑‍💻

5. 터미널을 이용한 프로젝트 실습 예제 👨‍💻

이제 진짜 자바를 실습해볼 시간이에요! 여기서 알려드리는 예제를 따라 하면, Java 설치 → 코드 작성 → 컴파일 → 실행까지 한 번에 정리할 수 있어요. 터미널만 있으면 끝! ✨

🧪 1단계: 폴더 및 파일 생성

mkdir -p myjava/src myjava/bin
cd myjava/src
nano HelloWorld.java

코드를 입력할 때는 아래 내용을 붙여넣으세요.

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("자바 실습 성공!");
    }
}

⚙️ 2단계: 컴파일

cd ..
javac -d bin src/HelloWorld.java

🚀 3단계: 실행

java -cp bin HelloWorld

터미널에 아래처럼 출력되면 성공입니다! 🎉

자바 실습 성공!

✅ 실습 팁

  • 윈도우에서는 cmd 대신 PowerShell 또는 Git Bash를 사용해도 좋아요.
  • 에러가 났을 땐 파일 이름, 경로, 클래스명 대소문자 확인!

이렇게 직접 실습해보면서 자바의 흐름을 몸에 익히는 게 정말 중요해요. 다음 단계에서는 흔히 발생하는 컴파일 또는 실행 오류와 해결 방법도 알려드릴게요!

6. 컴파일/실행 오류 상황과 해결 방법 ❗

자바 처음 시작할 때 가장 당황스러운 순간은 에러 메시지예요. 😵 “분명히 똑같이 했는데 왜 안 되지?” 싶은 순간, 꼭 있죠. 그런데 대부분의 에러는 파일 이름, 클래스명, 경로 문제로 발생해요. 자주 발생하는 실수와 해결 방법을 모아봤어요.

🚫 자주 발생하는 컴파일 오류

에러 메시지 원인 해결 방법
class HelloWorld is public, should be declared in a file named HelloWorld.java 파일명과 클래스명이 다를 때 HelloWorld라는 클래스명과 같은 이름의 HelloWorld.java로 저장
';' expected 세미콜론 누락 각 문장의 끝에 ;를 꼭 붙이기
cannot find symbol 변수/메서드/클래스명이 잘못되었거나 선언되지 않음 오타, 선언 여부, import 여부 확인

💥 자주 발생하는 실행 오류

  • Error: Could not find or load main class HelloWorld → 클래스 경로가 잘못되었거나 -cp 옵션 누락
  • java.lang.NoClassDefFoundError → 클래스 경로가 빌드 시와 실행 시 다름
  • Exception in thread "main"main 메서드가 잘못되었거나 오타가 있음

🛠 에러 해결 체크리스트

  1. 클래스명과 파일명이 같은지 확인
  2. main 메서드가 정확한지 확인
  3. 컴파일 시 javac, 실행 시 java 사용 구분
  4. 클래스 경로 지정 -cp 사용 여부 확인
  5. 터미널 위치(폴더 경로)가 맞는지 다시 체크

에러는 처음엔 무서워도, 하나하나 해결해 나가다 보면 어느새 친숙한 친구가 돼요. 정말이에요. 😉 앞으로 실습을 하다가 비슷한 에러가 나면 이 글을 다시 열어보세요!

마무리하며 ✨

자바 프로젝트의 구조부터 컴파일, 실행 과정까지 직접 따라 해보셨나요? 처음에는 복잡하게 느껴질 수 있지만, 단계를 하나하나 밟아보면 자바가 얼마나 체계적이고 명확한 언어인지 느끼게 됩니다. 소스 코드를 작성하고, 컴파일하고, JVM으로 실행하는 이 일련의 과정은 앞으로 여러분이 만나게 될 수많은 프로젝트의 기본이 될 거예요.

이 글이 자바 학습의 첫걸음을 좀 더 쉽고 친절하게 만들어주는 데 도움이 되었기를 바라며, 앞으로 이어질 내용들에서도 실습 중심의 설명을 이어갈게요. 우리 함께 끝까지 자바 마스터, 도전해봐요! 💪

반응형

+ Recent posts