Java classpath 지정해서 실행하는 방법

자바를 CLI 환경에서 실행할 때 참조하는 classpath를 직접 지정하려면 -classpath 옵션을 사용한다. classpath를 지정하지 않으면 기본적으로는 명령을 실행하는 디렉토리에서 클래스를 찾는다.

1. 윈도우 cmd에서 사용

윈도우에선 ; 구분자를 사용해서 여러 경로를 입력할 수 있다.

java -classpath <경로1>;<경로2>;... <메인클래스>

단일 경로 지정

물론 단일 경로만 입력해도 된다. 이땐 ; 구분자를 쓰지 않아도 된다.

C:\workspace\java>java -classpath . HelloWorld
Hello, World!

복수 경로 지정

C:\workspace\java>java -classpath .;C:\workspace\java; HelloWorld
Hello, World!

2. 리눅스 쉘에서 사용

리눅스에서도 사용 방법은 동일하고 classpath 경로를 여러 개 지정할 때 : 를 사용하는 점이 다르다.

java -classpath <경로1>:<경로2>:... <메인클래스>

3. jar 파일을 classpath 잡을 때

주의할 점은 classpath를 폴더 경로로 지정하면 해당 폴더 안에 있는 jar는 참조하지 않는다는 것이다. jar 파일을 classpath에 포함시키려면 jar의 full path를 지정해야 한다.

java -classpath ./lib/some-library.jar <클래스명>

만약 해당 경로에 있는 모든 jar를 참조하려면 * 를 사용한다.

java -classpath .:./* <클래스명>

classpath란?

classpath는 java에서 클래스와 리소스 파일을 찾기 위한 경로를 지정하는 개념이다. java 애플리케이션을 실행할 때 JVM은 필요한 class 파일, jar 파일 같은 라이브러리를 찾기 위해 classpath를 사용한다.

외부 라이브러리를 사용하는데 실행이 안 되면 해당 라이브러리가 있는 위치를 classpath에 잡아주지 않은 게 원인인 경우가 많다.

댓글 남기기