클래스패스 (classpath)

허성재's avatar
Aug 23, 2024
클래스패스 (classpath)
클래스패스(classpath)는 Java 프로그래밍에서 사용되는 중요한 개념 중 하나로, JVM(Java Virtual Machine)이나 Java 컴파일러가 클래스 파일(.class)을 찾는 경로를 지정하는 데 사용됩니다.

1. 클래스패스의 역할

  • Java 애플리케이션을 실행하거나 컴파일할 때 필요한 클래스나 패키지들을 찾기 위해 JVM이나 컴파일러는 클래스패스를 참조합니다.
  • 클래스패스는 여러 디렉토리나 JAR 파일들로 구성될 수 있으며, 각 요소는 JVM이 클래스 파일을 찾기 위해 순서대로 검색됩니다.

2. 클래스패스 설정 방법

  • 명령줄에서 설정: java 또는 javac 명령어를 사용할 때 cp 또는 classpath 옵션을 사용하여 클래스패스를 지정할 수 있습니다.
    • java -cp .:lib/some-library.jar com.example.Main
      여기서 .은 현재 디렉토리를, lib/some-library.jar는 특정 라이브러리 JAR 파일을 의미합니다.
  • 환경 변수로 설정: 시스템 환경 변수 CLASSPATH를 설정할 수도 있습니다. 다만, 이 방법은 잘 사용되지 않으며, 대신 명령줄에서 필요한 경우에만 클래스패스를 지정하는 것이 일반적입니다.

3. 클래스패스의 기본값

  • 클래스패스가 명시적으로 설정되지 않은 경우, JVM은 기본적으로 현재 작업 디렉토리(.)를 클래스패스로 사용합니다. 이는 현재 디렉토리에 있는 클래스 파일을 검색할 수 있다는 의미입니다.

4. JAR 파일과 클래스패스

  • JAR(Java Archive) 파일은 여러 클래스 파일과 리소스를 하나의 파일로 묶어 배포하는 데 사용됩니다. JAR 파일을 클래스패스에 포함시키면 그 안에 포함된 모든 클래스가 JVM에서 사용될 수 있습니다.

5. 클래스패스와 패키지

  • Java에서 클래스는 패키지로 조직화됩니다. 클래스패스는 최상위 패키지의 경로를 가리키며, JVM은 그 경로에서 패키지 구조를 따라 클래스를 찾습니다.

6. 예시

  • 예를 들어, com.example.MyClass라는 클래스가 project/bin 디렉토리에 있다면, 클래스패스에 project/bin을 포함시켜야 com.example.MyClass를 사용할 수 있습니다.
java -cp project/bin com.example.MyClass
이처럼 클래스패스는 Java 애플리케이션의 실행과 컴파일에 필수적인 역할을 하며, 올바르게 설정되지 않으면 ClassNotFoundException과 같은 오류가 발생할 수 있습니다.
Share article

heo-gom