[클래스패스]
클래스 패스(classpath)는 이름에서 알 수 있듯이 클래스가 위치하는 경로를 지정해 자바가 필요로 하는 어떤 클래스를 로드할 수 있는 방법을 지정하는 것이다.
ClasspathDemo.java
class Item{
}
class ClassPathDemo{
}
이 상태에서 명령 프롬프트를 실행합니다.
명령 프롬프트 또는 터미너를 통해 현재 디렉토리로 이동해야 하는데 윈도우에서는 윈도우 탐색기의 주소 표시줄을 클릭히면 현재 경로가 나타난다. cd 명령을 이용해 파일이 들어있는 디렉토리로 이동한다.
cd C:\java_tutorials\srcin
엔터를 치면 cd 뒤에 따라오는 경로로 현재 디렉터리가 변경된다.
이 상태에서 현재 디렉터리에 어떤파일이 있는지 살표보자.
윈도우에서는 dir명령어를 실행하면 조금 전의 윈도우 탐색기에 표시된 내용과 동일한 내용이 화면에 출력된다.
ClasspathDemo.java 파일을 컴파일하려면 콘솔에서 javac명령어를 사용해야 한다.
여기서 c는 컴파일을 의미한다.
즉, 소스코드를 컴파일해서 클래스 파일로 만든다는 뜻이다.
javac ClasspathDemo.java
위 명령을 실행하고 dir 결과를 살펴보면 Item.class라는 파일과 ClasspathDemo.java라는 두 개의 파일이 컴파일 결과로 생성된다.
즉, javac를 이용해 소스코드를 컴파일할 경우 소스코드가 하나라고 해서 하나의 .class 파일이 만들어 지는 것이 아니고
소스코드 안에 들어있는 클래스가 두 개라면 두 개의 .class 파일이 만들어 지는 것이다.
[클래스와 경로의 관계]
ClasspathDemo2.java
class Item2{
public void print(){
System.out.println("Hello world");
}
}
class ClasspathDemo2{
public static void main(String [] args){
Item2 i1 = new Items();
i1.print();
}
}
javac ClasspathDemo2.java
즉, Item2.class와 ClasspathDemo2.class라는 두개의 파일이 만들어 진다.
java ClasspathDemo2
방금 컴파일한 ClasspathDemo2 파일을 위 명령어로 실행하면 ClasspathDemo2.class 파일에 담긴 main 메소드를 자바가 대신 호출해서 프로그램을 실행하고, 그 결과로 "Hello world"가 출력된다.
어떤 클래스를 실행할 때 해당 클래스가 위치한 장소, 또 위치한 장소의 후보군을 지정하면 자바가 프로그램을 실행하는 과정에서 필요한 클래스를 클래스패스로 지정해둔 곳에서 순차적으로 발견될 때까지 찾고 결국 발견되지 않으면 에러가 발생하는 것이다.
자바는 클래스패스를 지정하지 안흥면 자바는 기본적으로 현재 디렉터리에서 내가 명시한 클래스를 찾는다.
[환경변수]
환경변수는 자바애플리케이션을 실행할 때 사용하는 클래스가 컴퓨터 상에서 어디에 위치해 있는가를 지정하는 것이다. 환경변수가 필요한 이유는 어떤 프로그램을 만들 때 프로그램을 처음부터 끝까지 혼자서 만드는 경우는 거의 없고 사실 불가능하기 때문이다. 다른 사람이 만든 로직을 자신이 만든 프로그램으로 가져오는 방식으로 프로그램을 만든다.
그런 경우에 다른 사람이 만든 로직, 다시 말해 다른 사람이 만든 클래스를 자신이 제작 중인 클래스로 가져오려면 경로를 지정할 필요가 있고, 여러 개의 애플리케이션이 공통 클래스를 사용하는 경우에도 각 애플리케이션이 공통 클래스를 읽어오려면 경로를 지정할 피룡가 있다.
환경변수는 운영체제에 설정하는 변수로서 운영체제 안에서 어디에 있건 접근할 수 있는 전역변수이기 때문에 변수를 이용해 약속된 값을 미리 지정해 두고 그 용도에 따라 변수의 값이 사용된다.
CLASSPATH는 자바가 사용하기로 약속해둔 변수이기 떄문에 지정한 변수의 값에 따라 클래스패스가 설정된다.
환경변수를 지정하는 방법은 운영체제마다 조금씩 다르다.
-환경 변수 설정은 추후에 이미지 추가할 예정
환경변수를 지정하면 자바 애플리케이션을 다른 컴퓨터로 옮겼을 때 해당 컴퓨터에는 환경변수가 지정돼 있지 않을 것이므로 프로그램을 실행해도 실행되지 않을 것이다.
'생활코딩 > JAVA' 카테고리의 다른 글
생활코딩 - JAVA (접근 제어자) (0) | 2020.12.19 |
---|---|
생활코딩 - JAVA (패키지) (0) | 2020.12.13 |
생활코딩 - JAVA (상속, 오버로딩, 오버라이딩) (0) | 2020.12.05 |
(2) JAVA : 변수 (0) | 2020.10.25 |
(1) JAVA : 숫자와 문자 (0) | 2020.10.25 |