SYNOPSIS[提要]
Javac [options] [sourcefiles] [@files]
oldJavac [options] [soucefiles] [@files]
參數可疑位任意順序
options
命令行選項
sourcefiles
一個或多個原文件
@files
一個或多個列有原文件列表的文件
DESCRIPTION[說明]
Javac工具讀由Java編程語言編寫的類(class)和接口(interface)的定義,並將它們編譯成字節代碼的class文件
有兩種將原文件名傳遞給Javac的方法
* 文件數量教少,可簡單將文件名列在命令行上
* 文件數量較多,將文件名列在一個文件中,文件名用空格(包括tab)或換行隔開.將該文件前加"@"字符後,使用Javac編譯
原文件必須有.Java後綴名,類(class)文件必須以.class為後綴名.原文件和類文件必須有定位該類的根文件名(即,去掉後綴的文件名).例如: 一個命名為MyClass的的類,原文件名應為MyClass.Java,該原文件將被編譯成字節代碼的名為MyClass.class的類文件.
嵌套類(inner class)的定義將產生附加的類文件.這些類文件的文件名由外部類名(outer class names)和嵌套類名合並而成. 例如, MyClass$MyInnerClass.class
你應該將原文件放置在能反應它們package tree的目錄下.例如,如果你將所有的原文件放置在/workspace目錄下,com.mysoft.mypack.MyClass類的原文件(即 .Java文件)應該為/workspace/com/mysoft/mypack/MyClass.Java
[對Windows: 以上應為.例如你將所有的原文件放置在c:\workspace目錄下,com.mysoft.mypack.MyClass類的原文件應為c:\workspace\com\mysoft\mypack\MyClass.Java ]
缺省情況下,編譯器將把類文件(.class文件)放置到和原文件(.Java)相同的目錄下.你可以通過使用-d選項指定目標目錄(見選項的說明)
查找類型
當編譯一個文件時,編譯器通常需要關於它暫時無法鑒別的類型的信息. 編譯器需要每一個在文件中使用的,extened或implemented的類或接口的類型信息. 它包括在文件中沒有明顯提級的,但是有可能通過繼承來提供信息的類或接口.
例如: 當你繼承Java.applet.Applet,你同時也使用了Applet類的祖先:Java.awt.Panel,
Java.awt.Container,Java.awt.Component和Java.awt.Object.
當編譯器需要類型信息時,它尋找定義了類型信息的原文件或類文件.編譯器首先尋找boottrap和extension類(這些除非你使用編譯器選項,否則不需要關心),接著查找用戶的類路徑,用戶的類路徑通過CLASSPATH環境變量或使用命令行選項-classpath來定義.(細節,請看*設置Class Path*),如果使用-sourcepath命令行選項,編譯器將在該路徑下查找原文件,否則編譯器將在用戶類路徑下同時查找類文件和原文件. 你可以通過使用-bootclasspath和-extdirs命令行選項來設置不同的bootstrap和extension類;見下面的Cross-Compilation options
一次成功的查找將找到一個類文件,原文件或兩者.下面是Javac如何處理每一種情況
*查找找到一個類文件(.class文件)但無原文件(.Java文件): Javac使用了類文件
*查找找到一個原文件但無類文件: Javac將編譯該原文件,然後使用生成的類文件
*查找找到兩者: Javac判斷類文件是否過期.如果類文件過期,Javac將重新編譯原文件並將使用更新後的類文件.否則,Javac將使用該類文件(沒有過期)
缺省情況下,Javac通過比較原文件和類文件的更改日期來判斷類文件是否過期.( -Xdepend選項提供了一個慢一些,但是更可靠的方法)
主意: Javac將默默(不輸出信息)地:-)編譯那些沒有在命令行上指定的文件.使用-verbose選項可以來跟蹤自動編譯過程.
[FILELIST]文件列表
為使Javac的命令行短小或更簡單,你可以指定一個或多個文件,這些文件每行含有一個文件名.在命令行,在這些文件前使用'@'字符來指定它們是文件列表.當Javac遇到一個的名開頭為"@",它將認為在該文件中的文件名為需要處理的文件的名子
例如: 你可以將所有的原文件列在一個名為sourcefile的文件中.這個文件可能如此:
MyClass1.Java
MyClass2.Java
MyClass3.Java
你可以通過
% Javac @sourcefiles
[ Windows: c:\jdk1.4\bin\Javac @sourcefiles]
編譯MyClass1.Java,MyClass2.Java,MyClass3.Java
OPTIONS[選項]
Javac有一系列的標准選項,這些選項被當前開發環境所支持,並且將在以後的發行版中繼續被支持.一些非標准的選項為專門為當前的虛擬機和編譯實現.它們將在將來改變.(非標准選項以-X開頭)