1.1 編譯選項
在cmd中執行javac -help
可以看到幫助信息
D:\temp>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 出現警告時終止編譯
@<文件名> 從文件讀取選項和文件名
1.2 編譯Java程序
1.2.1 直接編譯當前目錄下文件
編寫以下代碼並保存成Date2.java
:
import java.util.Calendar;
import java.util.Locale;
public class Date2 {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance(Locale.CHINA);
System.out.println("獲取時間: " + calendar.getTime());
}
}
然后在命令行執行javac Date2.java
即可編譯,
接着執行java Date2
即可運行程序:
1.2.2 帶有包路徑的編譯
我們在當前文件夾下新建com/amnotgcs文件目錄,
並在里面創建Num3.java,即com/amnotgcs/Num3.java
輸入下面代碼:
package com.amnotgcs;
import java.util.Scanner;
import java.text.NumberFormat;
import java.text.ParseException;
public class Num3 {
public static void main(String[] args) throws ParseException {
Scanner scanner = new Scanner(System.in);
System.out.print("Please input a num: ");
String input = scanner.next();
NumberFormat nf = NumberFormat.getInstance();
System.out.println(nf.parse(input));
}
}
然后我們在當前文件夾下執行javac com/amnotgcs/Num3.java
編譯程序,
接着執行java com.amnotgcs.Num3
或java com/amnotgcs/Num3
來運行程序:
我們這樣編譯時因為代碼中有了包路徑,直接編譯會報找不到類錯誤,
當然我們也可以使用另一種編譯方式。
我們在Num3.java所在目錄執行javac -d . Num3.java
來編譯程序,
這樣編譯會在當前目錄產生pacage所指定的目錄,並編譯程序。
1.2.3 指定編碼編譯
我們仍使用1.2.1的代碼,
在編譯后后運行可能會出現亂碼的情況:
這是由於編碼不統一導致的錯誤,
這涉及到了兩個編碼:一個時命令行所使用的編碼,一個是你.java文件使用的編碼。
只有你輸出時cmd的編碼和你編譯時.java文件的編碼一樣才能正常輸出。
所以要想正確輸出:
1、你可以更改.java文件的編碼和你cmd編碼一致
2、或者你可以更改cmd編碼和你.java文件編碼一致
3、編譯時指定編碼
在cmd中執行chcp
可以查看編碼,也可以執行chcp xxxx
臨時設置編碼,
比如chcp 65001
設置為UTF-8
編碼,
chcp 936
設置為GBK編碼。
文件的編碼可以在保存或另存為時選擇編碼,
或在其他文本編輯器中直接指定編碼,
比如在notepad3中直接指定編碼:
編譯時指定編碼:
用法:-encoding <編碼> 指定源文件使用的字符編碼
下圖編譯時文件使用的是UTF-8編碼,所以我用-encoding UTF-8指定了UTF-8編碼