GUI 使用指南
GUI 以精靈的方式完成每一次保護任務,流程如下:
應用程式類型 → 輸入、執行時、平臺 → 簡單或進階參數 → Windows EXE 啟動器(可選) → 輸出確認 → 執行
1. 應用程式類型
| GUI 選項 | 輸入 | 輸出 | 對應的 CLI 命令 |
|---|---|---|---|
| Java 應用 | 一般可執行 JAR | 完整的應用程式目錄 | javaapp |
| Spring Boot | Spring Boot 應用程式 | 完整的應用程式目錄 | springboot |
| Tomcat WAR | WAR | 內嵌 Tomcat 的目錄 | tomcat |
| 類庫加密 | 任意 JAR | 單一 P4JX 歸檔 | encode |
類型選錯,可能導致主類、相依套件、Web 資源或啟動器沒有被正確處理。

2. 輸入、執行時與目標平臺
一次精靈流程處理一個輸入 JAR 或 WAR。接著需要選擇:
- Java 版本:8、11、17、21 或 25,預設為 21。
- 目標平臺:可以一次選擇多個。
- 模式:簡單模式或進階模式。
- 產生 Windows 應用程式 EXE:可選,前提是至少選取一個 Windows 目標平臺。
選擇多個平臺時,工具會為每個平臺產生一個獨立的目錄。

3. 簡單模式
簡單模式適合絕大多數初次打包的情況。離開輸入頁時,工具會執行一次相容性掃描,並依掃描結果決定:
- 建議排除哪些類別;
- 是否啟用 JavaFX 與 WebView;
- 是否啟用掃描器 ZIP 覆蓋層;
- 是否改用
.jar歸檔字尾; - Spring Boot 採用哪一種佈局;
- 使用 Tomcat 9 還是 10.1。
掃描給出的是靜態分析的建議,而不是實際執行測試的結果。打包完成後,仍然必須在目標平臺上實際測試應用程式。
4. 進階模式
進階模式可以手動設定歸檔字尾,決定是否停用 JIT,追加掃描器 ZIP 覆蓋層,設定 JVM 啟動選項,定義排除規則,以及設定各應用程式類型專屬的選項。
完整的操作說明、每個選項的意義、預設值以及各應用程式類型之間的差異,請參閱 Protector4J 進階模式設定。

5. Windows EXE 啟動器
在輸入頁勾選**產生 Windows 應用程式 EXE(x64/x86/ARM64)**之後,精靈會在參數頁之後插入一個啟動器頁面。這個選項位於簡單模式與進階模式的分歧之前,因此兩種模式都可以產生 EXE;不勾選時,精靈會直接進入輸出確認頁。
啟動器頁面可以填寫:
- EXE 檔案名稱:留空時使用輸入檔案的名稱,Tomcat 則使用
tomcat。 - 啟動器模式:主控台模式,或不顯示主控台視窗的 GUI 模式。
- Windows 圖示:可選的
.ico檔案。 - JVM 啟動選項:每行一個。啟用 EXE 後,這個輸入欄位只會出現在這一頁,填寫的選項會同時寫入 EXE 與啟動指令碼。
- Windows 版本資訊:檔案版本、產品版本、公司名稱、產品名稱、檔案說明與版權聲明。
類庫加密只輸出單一歸檔檔案,因此沒有這個選項。完整說明請見產生 Windows EXE 啟動器。
6. 排除規則
GUI 與 CLI 使用同一套寫法:
com.example.SecretService 精確比對這一個類別
com.example.service.* 只比對目前的套件
com.example.service.** 比對目前套件及其所有子套件
把 DTO、實體、控制器、設定類別、JNI 橋接類別,以及需要在執行時做位元組碼增強的類別排除掉,就可以只保護核心商業邏輯。
7. 輸出確認
最後一頁會顯示:
- 輸入檔案與應用程式類型;
- Java 版本與目標平臺;
- 是否啟用 JavaFX;
- 歸檔格式、JIT 設定、覆蓋層與 Spring 佈局;
- 保護範圍、排除規則與 Tomcat 上下文路徑。
勾選新建資料夾,可以在輸出目錄下建立一個名稱唯一的 p4jx-xxxx 子目錄來存放結果。若是要往現有的 Tomcat 包中追加應用程式,就不能使用這一項,因為那種情況必須直接指定既有的 Tomcat 目錄。

8. 匯出與載入任務檔案
進階參數頁與最終確認頁都可以匯出 p4j-task.yml 任務檔案,該檔案可以手動編輯。任務檔案會記錄目前已解析的設定:
- 輸入、應用程式類型與輸出設定;
- Java 版本與一個或多個目標平臺;
- 保護範圍、相容性與打包選項。
檔案中的註解會同時給出 p4j --task-file <檔案> 的呼叫方式,以及等價的純命令列寫法。帳號電子郵件與密碼不會寫入任務檔案;執行時若沒有補上正式帳號憑證,產生的將是試用版。
使用視窗頂端的載入任務檔案,可以重新讀入 YAML、還原任務,並直接跳到最終確認頁。舊版本匯出的 p4j-encrypt-run.sh 與 .bat 仍然可以匯入,但 GUI 已經不再匯出執行指令碼。