클래스패스(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