λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μΉ΄ν…Œκ³ λ¦¬ μ—†μŒ

μœˆλ„μš°μ—μ„œ μ‹€ν–‰ν–ˆλ˜ μžλ°” 파일이 μ‹€ν–‰λ˜μ§€ μ•Šμ„ λ•Œ ν•΄κ²° 방법

by βœ”πŸ‘‰1️⃣ 2025. 1. 27.

μœˆλ„μš°μ—μ„œ μ‹€ν–‰λ˜λ˜ μžλ°” 파일(Java File)이 κ°‘μžκΈ° μ‹€ν–‰λ˜μ§€ μ•ŠλŠ” λ¬Έμ œλŠ” μ—¬λŸ¬ 가지 μ›μΈμœΌλ‘œ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€. 특히, JDK μ„€μΉ˜ 문제, ν™˜κ²½ λ³€μˆ˜ μ„€μ •, μ½”λ“œ 였λ₯˜, λ˜λŠ” μžλ°” λŸ°νƒ€μž„ ν™˜κ²½(JRE) 문제 등이 μ£Όμš” μ›μΈμž…λ‹ˆλ‹€. μ•„λž˜μ—μ„œ λ‹¨κ³„λ³„λ‘œ 원인과 ν•΄κ²° 방법을 정리해 λ³΄μ•˜μŠ΅λ‹ˆλ‹€.


1. μžλ°” 파일 μ‹€ν–‰ 문제의 μ£Όμš” 원인

  • JDK λ˜λŠ” JRE λ―Έμ„€μΉ˜ λ˜λŠ” 손상: μžλ°” 싀행에 ν•„μš”ν•œ Java Development Kit(JDK) λ˜λŠ” Java Runtime Environment(JRE)κ°€ μ˜¬λ°”λ₯΄κ²Œ μ„€μΉ˜λ˜μ§€ μ•Šμ•˜κ±°λ‚˜ μ†μƒλ˜μ—ˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.
  • ν™˜κ²½ λ³€μˆ˜ μ„€μ • 문제: JAVA_HOME λ˜λŠ” PATH ν™˜κ²½ λ³€μˆ˜κ°€ μ œλŒ€λ‘œ μ„€μ •λ˜μ§€ μ•Šμ€ 경우 μžλ°” 파일 싀행이 μ‹€νŒ¨ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • 파일 경둜 문제: μžλ°” 파일(.java)이 잘λͺ»λœ λ””λ ‰ν† λ¦¬μ—μ„œ μ‹€ν–‰λ˜κ±°λ‚˜, μ‹€ν–‰ λͺ…령이 μ˜¬λ°”λ₯΄μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ½”λ“œ 였λ₯˜: μžλ°” 파일 μžμ²΄μ— μ‹€ν–‰ν•  수 μ—†λŠ” 였λ₯˜κ°€ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

2. ν•΄κ²° 방법

(1) JDK 및 JRE μ„€μΉ˜ 확인

  1. μ„€μΉ˜ 확인:
    • λͺ…λ Ή ν”„λ‘¬ν”„νŠΈ(CMD) μ—΄κΈ° > java -version μž…λ ₯ ν›„ Enter.
    • μ •μƒμ μœΌλ‘œ μ„€μΉ˜λ˜μ–΄ μžˆλ‹€λ©΄ ν˜„μž¬ μ„€μΉ˜λœ Java 버전이 ν‘œμ‹œλ©λ‹ˆλ‹€.
      예:
      java version "17.0.2"  
      Java(TM) SE Runtime Environment (build 17.0.2+8)  
      Java HotSpot(TM) 64-Bit Server VM (build 17.0.2+8, mixed mode)
  2. μ„€μΉ˜λ˜μ§€ μ•Šμ•˜κ±°λ‚˜ 버전이 ν‘œμ‹œλ˜μ§€ μ•ŠμœΌλ©΄:
    • 였라클 곡식 μ‚¬μ΄νŠΈ λ˜λŠ” OpenJDKμ—μ„œ μ΅œμ‹  JDKλ₯Ό λ‹€μš΄λ‘œλ“œν•˜κ³  μ„€μΉ˜ν•˜μ„Έμš”.
    • JREλŠ” JDK μ„€μΉ˜ μ‹œ ν•¨κ»˜ μ„€μΉ˜λ˜λ―€λ‘œ λ”°λ‘œ μ„€μΉ˜ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.

(2) ν™˜κ²½ λ³€μˆ˜ μ„€μ • 확인

JDKκ°€ μ„€μΉ˜λ˜μ–΄ μžˆμ–΄λ„ ν™˜κ²½ λ³€μˆ˜ 섀정이 잘λͺ»λ˜μ—ˆμœΌλ©΄ μ‹€ν–‰λ˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό ν™•μΈν•˜κ³  μ˜¬λ°”λ₯΄κ²Œ μ„€μ •ν•΄ λ³΄μ„Έμš”.

  1. ν™˜κ²½ λ³€μˆ˜ μ„€μ • 확인:
    • JAVA_HOME 확인:
      1. μ œμ–΄νŒ > μ‹œμŠ€ν…œ > κ³ κΈ‰ μ‹œμŠ€ν…œ μ„€μ • > ν™˜κ²½ λ³€μˆ˜λ‘œ 이동.
      2. μ‹œμŠ€ν…œ λ³€μˆ˜μ—μ„œ JAVA_HOME 확인.
      3. 값이 JDK μ„€μΉ˜ 경둜(예: C:\Program Files\Java\jdk-17.0.2)둜 μ„€μ •λ˜μ–΄ μžˆλŠ”μ§€ 확인.
    • PATH 확인:
      1. μ‹œμŠ€ν…œ λ³€μˆ˜μ—μ„œ Pathλ₯Ό μ°Ύμ•„ νŽΈμ§‘ 클릭.
      2. JAVA_HOME\bin(예: C:\Program Files\Java\jdk-17.0.2\bin) κ²½λ‘œκ°€ μΆ”κ°€λ˜μ–΄ μžˆλŠ”μ§€ 확인.
  2. ν™˜κ²½ λ³€μˆ˜ μ„€μ • 방법:
    • JAVA_HOME을 μ„€μ •ν•˜λ €λ©΄:
      • μƒˆ λ³€μˆ˜ μΆ”κ°€ > λ³€μˆ˜ 이름: JAVA_HOME, λ³€μˆ˜ κ°’: JDK μ„€μΉ˜ 경둜.
    • Path에 μΆ”κ°€ν•˜λ €λ©΄:
      • νŽΈμ§‘ 클릭 > μƒˆλ‘œ λ§Œλ“€κΈ° > %JAVA_HOME%\bin μΆ”κ°€.
  3. CMDλ₯Ό λ‹€μ‹œ μ—΄κ³  java -versionκ³Ό javac -version을 μž…λ ₯ν•΄ ν™•μΈν•˜μ„Έμš”.

(3) μžλ°” 파일 μ‹€ν–‰ λͺ…λ Ή 확인

λͺ…λ Ή ν”„λ‘¬ν”„νŠΈμ—μ„œ μžλ°” νŒŒμΌμ„ μ‹€ν–‰ν•  λ•Œ, μ•„λž˜ λͺ…λ Ήμ–΄λ₯Ό ν™•μΈν•˜μ„Έμš”.

  1. 컴파일:
    • μžλ°” νŒŒμΌμ„ μ‹€ν–‰ν•˜λ €λ©΄ λ¨Όμ € .class 파일둜 μ»΄νŒŒμΌν•΄μ•Ό ν•©λ‹ˆλ‹€.
    • λͺ…λ Ήμ–΄:
      javac νŒŒμΌμ΄λ¦„.java
      • 예: javac HelloWorld.java
  2. μ‹€ν–‰:
    • 컴파일이 μ™„λ£Œλ˜λ©΄ μƒμ„±λœ .class νŒŒμΌμ„ μ‹€ν–‰ν•©λ‹ˆλ‹€.
    • λͺ…λ Ήμ–΄:
      java νŒŒμΌμ΄λ¦„
      • 예: java HelloWorld
  3. 주의:
    • .java ν™•μž₯μžλŠ” μ‹€ν–‰ λͺ…령에 ν¬ν•¨ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
    • ν˜„μž¬ μž‘μ—… 디렉토리가 μžλ°” 파일이 μžˆλŠ” κ²½λ‘œμ™€ μΌμΉ˜ν•˜λŠ”μ§€ ν™•μΈν•˜μ„Έμš”.
      • λͺ…λ Ήμ–΄: cd [파일이 μœ„μΉ˜ν•œ 디렉토리]

(4) μ‹€ν–‰ 디렉토리와 파일 확인

  • 파일 경둜 확인:
    • μžλ°” 파일이 μ‹€ν–‰ λͺ…령을 μ‹€ν–‰ν•˜λŠ” 디렉토리에 μžˆλŠ”μ§€ ν™•μΈν•˜μ„Έμš”.
    • λͺ…λ Ήμ–΄: dir둜 ν˜„μž¬ 디렉토리에 μžˆλŠ” 파일 λͺ©λ‘μ„ ν™•μΈν•©λ‹ˆλ‹€.
  • νŒ¨ν‚€μ§€ μ‚¬μš© μ—¬λΆ€:
    • μžλ°” 파일이 νŠΉμ • νŒ¨ν‚€μ§€ 내에 μžˆλ‹€λ©΄, νŒ¨ν‚€μ§€ ꡬ쑰λ₯Ό μœ μ§€ν•œ μƒνƒœμ—μ„œ μ‹€ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€.
    • 예:
      • com.example.HelloWorld νŒ¨ν‚€μ§€μ— μžˆλŠ” 경우:
        javac com/example/HelloWorld.java
        java com.example.HelloWorld

(5) μžλ°” μ½”λ“œ 였λ₯˜ 확인

μžλ°” μ½”λ“œ μžμ²΄μ— λ¬Έμ œκ°€ μžˆλŠ” 경우, 컴파일 λ‹¨κ³„μ—μ„œ μ—λŸ¬κ°€ λ°œμƒν•˜κ±°λ‚˜ 싀행이 μ œλŒ€λ‘œ λ˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

  1. 기본적인 μ½”λ“œ 예제:
    • μœ„ μ½”λ“œλ₯Ό μ‚¬μš©ν•΄ 컴파일과 싀행이 μ •μƒμ μœΌλ‘œ μ΄λ£¨μ–΄μ§€λŠ”μ§€ ν…ŒμŠ€νŠΈν•΄λ³΄μ„Έμš”.
  2. public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }
  3. μ½”λ“œμ—μ„œ λ°œμƒν•  수 μžˆλŠ” 문제:
    • 클래슀 이름이 파일 이름과 λ‹€λ₯Ό 경우: μžλ°”μ—μ„œ 파일 이름과 클래슀 이름은 동일해야 ν•©λ‹ˆλ‹€.
      • 예: HelloWorld.java νŒŒμΌμ—λŠ” public class HelloWorldκ°€ ν¬ν•¨λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.
    • main λ©”μ„œλ“œκ°€ μ—†κ±°λ‚˜ 잘λͺ» μ •μ˜λœ 경우: μ‹€ν–‰ κ°€λŠ₯ν•œ μ—”νŠΈλ¦¬ ν¬μΈνŠΈκ°€ ν•„μš”ν•©λ‹ˆλ‹€.
      • μ •ν™•ν•œ λ©”μ„œλ“œ μ„œλͺ…:
        public static void main(String[] args)

(6) 디버깅 및 둜그 확인

  • μ‹€ν–‰ μ‹œ 였λ₯˜ λ©”μ‹œμ§€κ°€ ν‘œμ‹œλ˜μ—ˆλ‹€λ©΄, 이λ₯Ό 주의 깊게 읽고 문제λ₯Ό ν•΄κ²°ν•˜μ„Έμš”.
  • 였λ₯˜ 둜그 μ˜ˆμ‹œ:
    • Exception in thread "main": main λ©”μ„œλ“œ μ •μ˜κ°€ 잘λͺ»λ˜μ—ˆκ±°λ‚˜ λˆ„λ½λ¨.
    • NoClassDefFoundError: 클래슀 파일이 κ²½λ‘œμ— μ—†κ±°λ‚˜ μ œλŒ€λ‘œ μƒμ„±λ˜μ§€ μ•ŠμŒ.

(7) μžλ°” 버전 ν˜Έν™˜μ„± 확인

  • μžλ°” μ½”λ“œκ°€ νŠΉμ • λ²„μ „μ—μ„œλ§Œ μ‹€ν–‰λ˜λ„λ‘ μž‘μ„±λ˜μ—ˆμ„ κ°€λŠ₯성이 μžˆμŠ΅λ‹ˆλ‹€.
    • μžλ°” 8 μ΄μƒμ—μ„œλŠ” λžŒλ‹€ ν‘œν˜„μ‹ λ“±μ˜ μ΅œμ‹  문법을 μ‚¬μš©ν•  수 μžˆμœΌλ‹ˆ, μžλ°” 버전을 ν™•μΈν•˜κ³  μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜μ„Έμš”.
    • κ΅¬λ²„μ „μ—μ„œ μ‹€ν–‰ν•΄μ•Ό ν•œλ‹€λ©΄, μ½”λ“œμ™€ JDK 버전을 λ§žμΆ”μ„Έμš”.

3. 자주 λ¬»λŠ” 질문 (FAQ)

Q1. μžλ°”κ°€ μ„€μΉ˜λ˜μ–΄ μžˆμ§€λ§Œ, μ‹€ν–‰ λͺ…령이 λ¨Ήνžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
A1. ν™˜κ²½ λ³€μˆ˜ 섀정이 잘λͺ»λ˜μ—ˆκ±°λ‚˜ λˆ„λ½λ˜μ—ˆμ„ κ°€λŠ₯성이 λ†’μŠ΅λ‹ˆλ‹€. JAVA_HOMEκ³Ό Pathλ₯Ό λ‹€μ‹œ μ„€μ •ν•΄λ³΄μ„Έμš”.

Q2. javac λͺ…λ Ήμ–΄λŠ” λ˜λŠ”λ°, java λͺ…λ Ήμ–΄κ°€ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
A2. μ΄λŠ” ν™˜κ²½ λ³€μˆ˜μ—μ„œ JAVA_HOME\bin κ²½λ‘œκ°€ μ œλŒ€λ‘œ μ„€μ •λ˜μ§€ μ•Šμ•˜κ±°λ‚˜, java μ‹€ν–‰ 파일이 μ†μƒλœ κ²½μš°μž…λ‹ˆλ‹€. JDKλ₯Ό μž¬μ„€μΉ˜ν•˜μ„Έμš”.

Q3. μžλ°” μ‹€ν–‰ μ‹œ NoClassDefFoundError 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.
A3. 클래슀 파일이 잘λͺ»λœ κ²½λ‘œμ— μžˆκ±°λ‚˜ νŒ¨ν‚€μ§€ ꡬ쑰가 μΌμΉ˜ν•˜μ§€ μ•Šμ„ κ°€λŠ₯성이 ν½λ‹ˆλ‹€. 컴파일 κ²½λ‘œμ™€ μ‹€ν–‰ λͺ…λ Ήμ–΄λ₯Ό λ‹€μ‹œ ν™•μΈν•˜μ„Έμš”.

Q4. μžλ°” μ½”λ“œκ°€ 정상인데도 μ‹€ν–‰λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
A4. JDK와 JREκ°€ μ΅œμ‹  μƒνƒœμΈμ§€ ν™•μΈν•˜κ³ , λ‹€λ₯Έ μ»΄ν“¨ν„°μ—μ„œ μ‹€ν–‰ν•΄λ³΄μ„Έμš”. μ½”λ“œ 자체의 λ¬Έμ œμΈμ§€ μ‹œμŠ€ν…œ λ¬Έμ œμΈμ§€ ꡬ뢄할 수 μžˆμŠ΅λ‹ˆλ‹€.


κ²°λ‘ : λ‹¨κ³„λ³„λ‘œ μ κ²€ν•˜λ©° 문제λ₯Ό ν•΄κ²°ν•˜μ„Έμš”

μžλ°” 파일이 μ‹€ν–‰λ˜μ§€ μ•ŠλŠ” λ¬Έμ œλŠ” ν™˜κ²½ λ³€μˆ˜ μ„€μ •, μ½”λ“œ 였λ₯˜, JDK μ„€μΉ˜ λ¬Έμ œμ—μ„œ 주둜 λ°œμƒν•©λ‹ˆλ‹€. μœ„ 단계λ₯Ό μ°¨κ·Όμ°¨κ·Ό λ”°λΌν•˜λ©° 문제λ₯Ό μ κ²€ν•˜κ³ , ν•„μš” μ‹œ JDKλ₯Ό μž¬μ„€μΉ˜ν•˜κ±°λ‚˜ ν™˜κ²½ λ³€μˆ˜λ₯Ό μž¬μ„€μ •ν•˜μ„Έμš”.

λŒ“κΈ€