環境準備
- 安裝 JDK(非 JRE)
- 配置
JAVA_HOME 及 Path 包含 %JAVA_HOME%\bin
- 驗證:
java -version、javac -version
目錄切換技巧
D: # 切換到 D 槽
cd D:\workspace # 進入專案目錄
pushd D:\path # 記錄並切換(popd 可返回)
核心命令詳解
1. javac - 編譯器
javac -d . Hello.java
| 參數 | 作用 |
-d <dir> | 指定 .class 輸出目錄,自動建立包目錄結構 |
-sourcepath | 指定原始碼搜尋路徑 |
-cp / -classpath | 依賴類路徑 |
-encoding UTF-8 | 原始碼編碼(防中文亂碼) |
關鍵差異:
javac Hello.java → 當前目錄產生 Hello.class,無包目錄
javac -d . Hello.java → 依 package com.xxx; 在當前目錄建立 com/xxx/Hello.class
2. java - 運行器
java -cp . com.xxx.Hello
- 需使用全限定類名(包名.類名)
-cp . 將當前目錄加入類路徑,使 JVM 能找到 com/xxx/Hello.class
- 錯誤
Could not find or load main class 通常是類路徑或包結構錯誤
3. javap - 反編譯/位元碼檢視
javap -c -v com.xxx.Hello
| 選項 | 說明 |
-c | 輸出方法位元碼指令 |
-v / -verbose | 輸出常量池、行號表、LocalVariableTable 等詳細資訊 |
-p / -private | 顯示所有成員(預設只顯 public/protected) |
完整實戰演示
// 檔案:E:\test\JavacTest.java
package com.stopTalking.test;
public class JavacTest {
public static void main(String[] args) {
byte a = 5; short b = 6;
System.out.println("JavacTest [a=" + a + ", b=" + b + "]");
}
}
- 編譯:
javac -d . JavacTest.java → 產生 ./com/stopTalking/test/JavacTest.class
- 運行:
java com.stopTalking.test.JavacTest → 正常輸出
- 反編譯:
javap -c com/stopTalking/test/JavacTest → 顯示 bipush 5, bipush 6, invokevirtual println 等位元碼
常見錯誤與對策