기본적으로 dos 에서는 .는 현재 디렉토리를 의미하고 ..는 현재 디렉토리의 상위디렉토리를 의미한다.
또한 classpath 대신 단축어인 cp를 사용해도 된다.
javac -cp C:\Java\Engclasses C:\Java\Hello.java
** 유닉스에서 클래스 경로(classpath) 항목은 콜론(:) 으로 구분한다.
** 윈도우에서 클래스 경로(classpath) 항목은 세미콜론(;) 으로 구분한다.
b) -d
-d directory
클래스 파일을 생성할 Root 디렉토리를 지정한다.
기본적으로 컴파일러는 -d 옵션을 주지 않으면 소스파일이 위치한 디렉토리에 클래스 파일을 생성시킨다.
예를 들어 Hello.java파일이 C:\Java 디렉토리에 존재하고 클래스 파일의 Root 디렉토리를 C:\Java\Classfiles 라고 하면
javac -d C:\Java\Classfiles C:\Java\Hello.java
이다.
만약 -d 옵션을 사용하려고 하는데 Root 디렉토리(위예에서는 C:\Java\Classfiles) 가 존재 하지 않는다면
"The system cannot find the path specified"라는 에러 메시지를 보게 된다.
현재 작업 디렉토리가 C:\Java\Classfiles 에 위치하면
javac -d .\Classfiles Hello.java 와 같이 상대 디렉토리로 표현할수 있다.
java class내에서 package를 선언한 경우 package별 폴더를 생성하고 해당 폴더에(package) compile 한다.
c) -encoding
-encoding encoding name
소스 파일에 사용된 문자열 인코딩을 설정한다.
만약 위 옵션이 설정되어 있지 않으면 플랫폼의 기본적인 컨버터가 사용되어 진다.
d) -g
모든 디버깅 정보를 생성시킨다.
만약 위 옵션이 설정되어 있지 않으면 기본적으로 라인넘버만 생성시킨다.
-g:none 디버깅 정보를 전혀 생성 시키지 않는다.
-g:{lines, vars, source}
위처럼 명시적으로, 몇몇 디버깅 정보를 생성시킬수 있다.
lines은 라인정보, vars는 지역변수, sounce는 소스 파일 정보를 나타낸다.
e) -nowarn
경고 메시지 (warning message)를 생성시키지 않는다.
f) -verbose
컴파일러와 링커가 현재 어느 소스파일이 컴파일되고 있고, 어느 파일이 링크되고 있는지 그 정보를 출력한다.
h) -deprecation
소스 코드 내에서 사용되어진 deprecated API의 위치를 출력한다.
eg)
C:\Java> javac World.java
Note: World.java uses a deprecated API. Recompile with "-deprecation" for details.
1 warning
C:\Java> javac -deprecation World.java
World.java:52: Note: The method java.awt.Dimension size() in class java.awt.Compon
ent has been deprecated.
Dimension d = size();
Note: World.java uses a deprecated API. Please consult the documentation for a be
tter alternative.
i) -sourcepath
-sourcepath 소스패스
소스파일의 위치를 지정한다.
j) -target
-target 자바 가상머신버전
지정된 자바 가상머신 버전의 VM에서 작동되어지도록 클래스 파일을 생성시킨다.
1.1
jvm 1.1 버전에서 호환되어 질 수 있는 클래스 파일생성
1.2
jvm 1.2 버전에서 호환되어 질 수 있는 클래스 파일생성
1.3
jvm 1.3 버전에서 호환되어 질 수 있는 클래스 파일 생성
ex)
javac -target 1.2 Helloworld.java
k) -bootclasspath 패스
특정한 bootstrap 또는 확장 클래스를 지정할 수 있다.
기본적으로 자바 컴파일러는 javac 가 설치된 플랫폼의 bootstrap과 확장 클래스들을 통해서 컴파일 작업을 수행하지만 bootclasspath 옵션을 사용하면 cross-compiling 이라고 해서 다른 JAVA 플랫폼의 bootstrap과 확장 클래스들을 통해서 compile 할 수 있는 기능을 지원한다.