티스토리 뷰

Java

자바의 클래스패스(classpath)

siyoon210 2018. 12. 3. 20:58
반응형

클래스패스(classpath)

자바의 가상머신(JVM)이 컴파일된 클래스 파일(.class 확장자 파일)을 실행시킬 때, 클래스패스(classpath)에 설정된 경로에서 파일을 찾아봅니다. 그래서 자바파일을 (터미널 환경에서 직접) 컴파일 할 때는 아래와 같이 클래스패스 경로를 지정해주어야 합니다.

$java -classpath ".:bin" Hello

옵션으로 클래스패스를 주지 않으면 현재 디렉토리에서만 클래스를 찾게 되지만, 만약 클래스들이 현재 디렉토리와 다른 경로에 존재한다면 위의 bin과 같이 명시해주어야 합니다. :(콜론)을 이용하여 경로를 구분합니다. (윈도우는 ; 세미콜론으로 구분합니다.) 위와 같이 설정하면 현재폴더와 bin 폴더 두 군데에서 찾아보게 됩니다.

위의 예제와 같이 클래스패스가 간단하면 상관없지만, 복잡한 구조로 여러 경로의 많은 클래스파일들을 사용해야 한다면 매번 컴파일 할 때마다 클래스패스를 명시하는 일은 반복적이고 번거로운 일이 될 겁니다. 이러한 이유로 클래스패스를 운영체제 상의 환경변수로 설정해 두는 작업을, 자바를 처음 사용할 때 하게 됩니다.


IDE의 자동 클래스패스 설정

클래스패스에 대해서 다시 공부하고, 자바를 멋모르고 처음 설치할 당시에 환경변수 설정을 어떤식으로 했는지 확인해 보기로 했습니다. (저는 우분투 리눅스를 사용하고 있습니다.) 리눅스의 환경변수를 세팅하는 /etc/profile파일을 열어보니, 자바와 관련한 설정은 아래와 같이 한줄이 명시되어 있었습니다.

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

실제 profile파일에는 자바의 설치경로만 명시되어있고, 클래스패스에 대한 설정은 하나도 없었습니다. (띠용..?) 이론으로 공부한 사항이 실제하지 않으니 당황스러운 기분이였는데, 최근에는 운영체제 상의 환경변수로 클래스패스를 설정하는 것은 지양하고 IDE나 빌드도구를 통해서 클래스패스를 설정한다는 것을 알게 되었습니다. 인텔리제이나 이클립스 같은 IDE를 사용하는 또 다른 이유가 있었던 겁니다.

반응형
댓글