(수정) 2022-05-30
가독성이 너무 좋지 않은것 같아 전체적으로 수정합니다.
안녕하세요. 졸린개발자입니다.
오늘은 java에서 자주 쓰이는 용어인 classpath에 대해 알아보도록 하죠.
사실, 지금까지 개발하면서 classpath를 많이 들어봤지만,
요즘엔 classpath를 IDE와 gradle에서 알아서 처리해줘서,
실질적으로 개발에 직접 이용하지 않았습니다.
하지만, classpath는 정말 자주 쓰이는 용어라,
제대로 한번쯤은 알아둘 필요가 있다고 생각하여 정리해봅니다.
공식문서
인터넷의 방대한 정보의 호수속에서 100% 신뢰가능한 것은 공식문서입니다.
우선 공식문서부터 보고 가시죠.
https://docs.oracle.com/javase/tutorial/essential/environment/paths.html
PATH and CLASSPATH (The Java™ Tutorials > Essential Java Classes > The Platform Environment)
The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer available. See Java Language Changes for a summary of updated
docs.oracle.com
(모든 이미지는 클릭하면 크게 보입니다.)
간략하게 위의 설명을 요약해보자면
- CLASSPATH는 user가 작성한 .class나 jar 파일들의 위치입니다.
- java 명령어의 -cp를 이용해 CLASSPATH를 지정해 줄 수 있습니다.
- CLASSPATH변경은 매우 까다로우니 조심해서 사용하라는 군요.
- CLASSPATH로 . 를 지정할 경우, 현재 디렉토리에서 찾게 됩니다.
- 맨 아래에는 os마다 classpath의 위치를 조회하는 명령어들이 있군요.
결국 한줄요약을 해보자면, user가 작성한 .class나 jar파일들의 위치입니다.
다시 말하자면, jvm에서 class를 loading할때 기본적으로 참조하는 위치입니다.
classpath를 설정하는 방법
- OS의 환경변수에 지정하는방법
OS의 환경변수 중, CLASSPATH에 지정하면 됩니다.
windows는 시스템환경변수편집
linux는 export명령어를 통해 지정해주시면 됩니다.
자세한 환경변수설정방법은 환경에 따라 너무 달라서,
구글링 해보시는걸 추천드립니다.
2. java -cp에서 지정하는 방법
java -cp로 classpath를 지정해 줄 수 있습니다.
저는 2번째 방법을 추천합니다.
어플리케이션 하나 돌리자고 OS환경 변수를 수정하면,
다른 어플리케이션들이 영향받아서 어떤 side effect가 발생할지 모릅니다.
어플리케이션마다 특정한 classpath로
-cp로 지정해서 다른 어플리케이션 실행에 영향이 가지 않도록 하는걸 추천합니다.
classpath의 default 설정
만약, classpath가 설정되어있지 않으면 기본값으로 . 이 됩니다.
즉, 현재 디렉토리가 classpath가 됩니다.
결론
오늘은 classpath에 대해 알아봤습니다.
자주 언급되는 용어라, 이번에 명확히 정리해보니 기분이 좋군요.
그럼 좋은 하루 보내세요.
'Java' 카테고리의 다른 글
데이터를 식별하기 위한 Unique한 ID생성하기 (트위터 스노우플레이크의 java구현) (0) | 2022.10.12 |
---|---|
Java에서의 정규표현식 Flag (0) | 2022.09.30 |