현재 디렉토리 : 실행중인 프로그램의 작업 디렉토리 (콘솔창에서 가리키고 있는 위치)
java파일을 컴파일 하기위해서 명령 프롬포트창에서 '파일명 javac' 를 실행할시 jvm 은 현재 디렉토리를 기반으로 자바 파일을 찾고 컴파일을 진행한다.
이때 위 사진을 기반으로 AAA, ZZZ, WhatYourName 3개의 클래스 파일이 디렉토리에 생성된다.
이후 main method를 지니고 있는 WhatYourName을 실행시키면 main이 실행되고 그 내부에서 AAA와 ZZZ 클래스를 호출하고 있기에 현재 디렉토리에서 AAA 파일과 ZZZ파일을 찾고 실행을 진행할 것이다.
문제가 생기는 경우
main이 포함된 클래스는 현재 디렉토리에 존재하나, 그 구성 메서드는 다른 디렉토리에 존재함!
-> main은 실행되나 메서드를 찾는과정에서 문제가 생긴다.
이 때 '클래스패스'에 새로운 디렉토리를 추가하면 문제가 없어짐(경로를 추가함)
클래스 패스 : 자바 가상머신의 클래스 탐색 경로
클래스 패스를 추가할때는 현재 실행 콘솔창에서만 유효함!
. 은 현재 디렉토리를 의미함 -> 클래스 패스란걸 지정해주면 jvm은 더이상 현재 디렉토리에서 클래스 파일을 찾는걸 디폴트로 하지 않기때문에 명시적으로 추가해주는 것.
(여전히 여기서 파일을 찾겠다.)
절대 경로 vs 상대 경로
출처 : 윤성우의 열혈Java 프로그래밍