程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> Javac--Java編程語言編譯器

Javac--Java編程語言編譯器

編輯:JAVA編程入門知識

       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

你可以通過


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved