javac 命令 - 入門
簡單的例子
假設“HelloWorld.java”包含以下 Java 原始碼:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
(有關上述程式碼的說明,請參閱 Java 語言入門 。)
我們可以使用以下命令編譯上面的檔案:
$ javac HelloWorld.java
這會生成一個名為“HelloWorld.class”的檔案,然後我們可以按如下方式執行:
$ java HelloWorld
Hello world!
這個例子需要注意的關鍵點是:
- 原始檔名“HelloWorld.java”必須與原始檔中的類名匹配…即
HelloWorld
。如果它們不匹配,你將收到編譯錯誤。 - 位元組碼檔名“HelloWorld.class”對應於類名。如果你要重新命名“HelloWorld.class”,那麼當你嘗試執行它時會出現錯誤。
- 使用
java
執行 Java 應用程式時,提供的類名不是位元組碼檔名。
包的示例
大多數實用的 Java 程式碼使用包來組織類的名稱空間,並降低意外類名衝突的風險。
如果我們想在包呼叫 com.example
中宣告 HelloWorld
類,“HelloWorld.java”將包含以下 Java 源:
package com.example;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
此原始碼檔案需要儲存在目錄樹中,其結構對應於程式包命名。
. # the current directory (for this example)
|
----com
|
----example
|
----HelloWorld.java
我們可以使用以下命令編譯上面的檔案:
$ javac com/example/HelloWorld.java
這會生成一個名為“com / example / HelloWorld.class”的檔案; 即編譯後,檔案結構應如下所示:
. # the current directory (for this example)
|
----com
|
----example
|
----HelloWorld.java
----HelloWorld.class
然後我們可以按如下方式執行應用程式:
$ java com.example.HelloWorld
Hello world!
此示例中需要注意的其他要點是:
- 目錄結構必須與包名稱結構匹配。
- 執行該類時,必須提供完整的類名; 即“com.example.HelloWorld”而不是
HelloWorld
。 - 你不必從當前目錄編譯和執行 Java 程式碼。我們這裡只是為了說明而做。
使用’javac’一次編譯多個檔案
如果你的應用程式包含多個原始碼檔案(大多數都是!),你可以一次編譯一個。或者,你可以通過列出路徑名來同時編譯多個檔案:
$ javac Foo.java Bar.java
或使用命令 shell 的檔名萬用字元功能….
$ javac *.java
$ javac com/example/*.java
$ javac */**/*.java #Only works on Zsh or with globstar enabled on your shell
這將編譯當前目錄中“com / example”目錄中的所有 Java 原始檔,並分別在子目錄中遞迴編譯。第三種方法是提供原始檔名(和編譯器選項)列表作為檔案。例如:
$ javac @sourcefiles
sourcefiles
檔案包含的位置:
Foo.java
Bar.java
com/example/HelloWorld.java
注意:編譯這樣的程式碼適用於小型單人專案和一次性程式。除此之外,建議選擇和使用 Java 構建工具。或者,大多數程式設計師使用 Java IDE(例如 NetBeans , eclipse , IntelliJ IDEA ),它提供嵌入式編譯器和專案的增量構建。
常用的’javac’選項
以下是 javac
命令的一些選項,可能對你有用
-d
選項設定用於編寫“.class”檔案的目標目錄。-sourcepath
選項設定原始碼搜尋路徑。-cp
或-classpath
選項設定用於查詢外部和以前編譯的類的搜尋路徑。有關類路徑以及如何指定它的更多資訊,請參閱類路徑主題。-version
選項列印編譯器的版本資訊。
將在單獨的示例中描述更完整的編譯器選項列表。
參考
javac
命令的權威參考是 javac
的 Oracle 手冊頁 。