개발/Java

classpath와 자바 옵션들

728x90

클래스패스란 말 그대로 클래스를 찾기위한 경로이다.

 

자바에서 클래스패스의 의미도 똑같다.

 

즉, 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가 발생할 때 이 옵션을 지정하여 스택의 크기를 증가시킬 수 있다.

 

 

 

https://effectivesquid.tistory.com/entry/%EC%9E%90%EB%B0%94-%ED%81%B4%EB%9E%98%EC%8A%A4%ED%8C%A8%EC%8A%A4classpath%EB%9E%80

 

 

'개발 > 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