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:workspacecommysoftmypackMyClass.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
你可以通過
%