Java| 命令編譯Java程式以及執行class檔案(javac)
本文主要說明了以下內容:
1.如何編譯一個無包結構的java檔案,以及執行該檔案?
2.如何編譯一個有包結構的java檔案,以及如何執行該檔案?
3.如何批量編譯java檔案,以及如何執行生成的檔案?
首先我們先看下javac
命令的常用操作選項:
常用引數:
-encoding <編碼>
有時候當我們的java檔案不是預設的GBK編碼的時候是需要在編譯Class的時候指定編碼格式的:
javac -encoding utf-8 ./TestClassPath.java
預設生成的class檔案是存放在了當前路徑下.
-d <目錄>
通常我們可以指定一個目錄來存已經編譯好的Class檔案,指定了該引數,則在生成class檔案的時候會根據java檔案的包結構自動生成對應的資料夾.
如何編譯一個無包結構的java檔案,以及執行該檔案?
public class NoPackageClass {
public static void main(String[] args) {
System.out.println("This is no package class!");
}
}
首先我們進入
NoPackageClass.java
所在的資料夾
編譯:javac -encoding UTF-8 ./NoPackageClass.java
我們會在執行命令的當前路徑下生成編譯後的class檔案NoPackageClass.class
執行: java NoPackageClass
(注意這裡只需要類名,不需要檔案字尾,否則會報錯)
結果:This is no package class!
如何編譯一個有包結構的java檔案,以及如何執行該檔案?
package com.yveshe;
public class PackageClass {
public static void main(String[] args) {
System.out.println("This is package class!" );
}
}
這裡我嘗試不在
PackageClass.java
所在的資料夾執行編譯,生成的class檔案是在執行javac命令時的工作路徑中,也及時temp目錄.
編譯:C:\Users\User\Desktop\temp>javac -encoding UTF-8 D:\workspace\Jasper-workspace\cmd\src\com\yveshe\PackageClass.java
雖然這是一個有包的java檔案,但是執行編譯的時候並不會根據包結構生成相應的資料夾.這裡我們需要指定一個存放生成class檔案的目錄,制定了目錄會自動根據包結構生成相應的資料夾
編譯:C:\Users\User\Desktop\temp>javac -encoding UTF-8 -d ./ D:\workspace\Jasper-workspace\cmd\src\com\yveshe\PackageClass.java
這時候在temp的當前目錄中建立了com/yveshe
這樣的目錄結構,PackageClass也就存放在yveshe目錄下.
執行:java com.yveshe.PackageClass
在當前目錄下執行java,也就是頂層包(資料夾com所在的目錄) 執行class檔案的格式為java 包名.類名
結果:This is package class!
如何批量編譯java檔案,以及如何執行生成的檔案?
編譯:
javac -encoding utf-8 -d ./ D:\workspace\Jasper-workspace\cmd\src\com\yveshe\*.java
上面的編譯命令只能將指定資料夾下的java檔案進行編譯,如果資料夾下無任何java檔案,則會報錯,它不會遞迴查詢java檔案.
具體執行方式與2中執行方式一致.
如何使用javac編譯一整個完整的java專案?
Javac命令支援選項
在使用javac命令的時候由於可以選擇的專案太多,可以使用哦
javac -help
命令來檢視所有支援的選項,結果如下:
javac -help
用法: javac <options> <source files>
其中, 可能的選項包括:
-g 生成所有除錯資訊
-g:none 不生成任何除錯資訊
-g:{lines,vars,source} 只生成某些除錯資訊
-nowarn 不生成任何警告
-verbose 輸出有關編譯器正在執行的操作的訊息
-deprecation 輸出使用已過時的 API 的源位置
-classpath <路徑> 指定查詢使用者類檔案和註釋處理程式的位置
-cp <路徑> 指定查詢使用者類檔案和註釋處理程式的位置
-sourcepath <路徑> 指定查詢輸入原始檔的位置
-bootclasspath <路徑> 覆蓋引導類檔案的位置
-extdirs <目錄> 覆蓋所安裝擴充套件的位置
-endorseddirs <目錄> 覆蓋簽名的標準路徑的位置
-proc:{none,only} 控制是否執行註釋處理和/或編譯。
-processor <class1>[,<class2>,<class3>...] 要執行的註釋處理程式的名稱; 繞過預設的搜尋程序
-processorpath <路徑> 指定查詢註釋處理程式的位置
-parameters 生成元資料以用於方法引數的反射
-d <目錄> 指定放置生成的類檔案的位置
-s <目錄> 指定放置生成的原始檔的位置
-h <目錄> 指定放置生成的本機標標頭檔案的位置
-implicit:{none,class} 指定是否為隱式引用檔案生成類檔案
-encoding <編碼> 指定原始檔使用的字元編碼
-source <發行版> 提供與指定發行版的源相容性
-target <發行版> 生成特定 VM 版本的類檔案
-profile <配置檔案> 請確保使用的 API 在指定的配置檔案中可用
-version 版本資訊
-help 輸出標準選項的提要
-A關鍵字[=值] 傳遞給註釋處理程式的選項
-X 輸出非標準選項的提要
-J<標記> 直接將 <標記> 傳遞給執行時系統
-Werror 出現警告時終止編譯
@<檔名> 從檔案讀取選項和檔名