클래스패스란 말 그대로 클래스를 찾기위한 경로이다.
자바에서 클래스패스의 의미도 똑같다.
즉, JVM이 프로그램을 실행할 때, 클래스파일을 찾는 데 기준이 되는 파일 경로를 말하는 것이다.
소스 코드(.java로 끝나는 파일)를 컴파일하면 소스 코드가 “바이트 코드”(바이너리 형태의 .class 파일)로 변환된다.
java runtime(java 또는 jre)으로 이 .class 파일에 포함된 명령을 실행하려면, 먼저 이 파일을 찾을 수 있어야 한다.
이때 .class 파일을 찾을 때 classpath에 지정된 경로를 사용한다. classpath는 .class 파일이 포함된 디렉토리와 파일을 콜론으로 구분한 목록이다.
java runtime은 이 classpath에 지정된 경로를 모두 검색해서 특정 클래스에 대한 코드가 포함된 .class 파일을 찾는다. 찾으려는 클래스 코드가 포함된 .class 파일을 찾으면 첫 번째로 찾은 파일을 사용한다.
classpath를 지정할 수 있는 두 가지 방법이 있다.
하나는 환경 변수 CLASSPATH를 사용하는 방법이고, 또 하나는 java runtime에 -classpath 플래그를 사용하는 방법이다.
아래와 같이 컴파일할 때나 실행할 때 다음과 같이 추가해줘야 한다.
$ java -classpath ~
$ java -cp ~
일반적인 클래스 패스의 환경 변수 이름은 CLASSPATH라고 지정한다.
컴파일 할 때 알아두면 좋은 옵션
-d : javac는 클래스가 있는 디렉터리에 클래스 파일을 생성. 이 옵션을 제공하면, 해당 디렉터리도 생성하고, 관련된 패키지 디렉터리도 생성하여 클래스 파일을 만들어준다.
-deprecation : deprecated 된 클래스에 대한 상세한 정보를 포함하여 컴파일한다.
-g : 디버깅과 관련된 정보를 포함한 클래스 파일을 생성.
자바의 표준 실행 옵션
-client : 클라이언트 VM을 사용한다. Swing과 같이 클라이언트 UI를 처리할 때 유용
-server : 서버 "VM"을 사용함
-cp 혹은 -classpath : 클래스 패스를 지정할 때 사용하며, 이 옵션의 공백 뒤에 경로를 연달아 지정하면 된다.
-verbose : 클래스가 JVM에 로딩되는 정보를 출력함
-verbosegc : gc가 발생하는 정보를 출력한다.
-version : JVM의 버전을 출력하고 프로세스를 종료한다
-showversion : JVM의 버전을 출력하고 자바 프로세스를 계속 수행한다.
-d32 : 가능한 경우 32비트 데이터 모델을 사용한다.
-d64 : 가능한 경우 64비트 데이터 모델을 사용함
-Xms : JVM의 시작 크기를 지정함
-Xmx : JVM의 최대 크기를 지정함.
-Xss : 스레드의 스택 크기를 지정함. StackOverflowError가 발생할 때 이 옵션을 지정하여 스택의 크기를 증가시킬 수 있다.
'개발 > Java' 카테고리의 다른 글
java.util 톺아보기 (0) | 2021.05.18 |
---|---|
Java Formatter (0) | 2021.05.18 |
자바 Jar란 (0) | 2021.05.18 |
자바8의 날짜 관련 클래스 (0) | 2021.05.18 |
함수형 인터페이스, java.util.function 패키지 (0) | 2021.05.18 |