保護 JavaSE 應用程式
入門影片
下載
前往 https://protector4j.com/download 下載最新版本
安裝
Windows 和 Linux
無需特殊安裝步驟,只需下載壓縮包並解壓即可。
macOS
下載 dmg 檔案並將 Protector4J 拖曳到 Applications 資料夾中。此工具的實際內容位於 /Applications/Protector4J.app/Contents/protector4j-mac

使用圖形介面工具加密 JavaSE 應用程式
進入 Protector4J 資料夾,執行 p4j-ui[.exe],您將看到以下使用者介面。
對於 macOS 使用者,只需像普通 Mac 應用程式一樣雙擊 Protector4J.app 即可。

登入
如果您已購買授權,請點擊右上角的登入按鈕並輸入您的使用者資訊。如果您沒有授權,仍然可以試用此工具。

選擇應用程式類型
在應用程式類型頁面上點擊「JavaSE Application」按鈕。

選擇需要加密的 jar/war 檔案
選擇您要加密的 jar/war 檔案,您可以選擇一個或多個檔案

選項
僅加密 jar 檔案
僅加密 jar 檔案,不部署整個 JRE。此選項通常與 KeySeed 功能結合使用,用於更新現有程式。
建立可執行檔
為應用程式建立可執行檔,請不要加上 .exe 副檔名。

隱藏控制台
此選項僅對 Windows 上的 GUI 程式有效,用於在程式執行期間隱藏命令列視窗。
JVM 選項
設定 JVM 選項,例如 -Xmx 和 -Xms,以空格或換行分隔。
輸出

Java 版本選擇
選擇 Java 版本,支援 Java 8、Java 11、Java 17 和 Java 21
建立新資料夾
預設為選取狀態,加密任務將在輸出資料夾中建立名為 p4j-[task-id] 的資料夾,輸出結果儲存在此資料夾中。
包含 JavaFX
如果是 JavaFX 應用程式,請選擇此選項
SWT 應用程式
如果是 SWT 應用程式,請選擇此選項。
KeySeed
加密任務預設會從伺服器請求一個隨機金鑰進行加密。不同加密任務產生的檔案無法一起使用。 如果指定了 KeySeed,相同的 KeySeed 將產生相同的加密金鑰。此選項可以與前面的「僅加密 Jar 檔案」選項搭配使用,來更新現有應用程式。 此選項僅對已授權使用者有效。
執行加密任務
請稍候片刻,加密任務完成後,您可以在輸出資料夾中查看加密應用程式的輸出結果。

執行加密後的應用程式
有三種方式可以執行加密後的應用程式
- 使用 exe 檔案執行
如果目標平台是 Windows,您可以使用加密任務期間產生的可執行檔來執行加密後的應用程式。
- 使用腳本執行
如果目標平台是 Linux 或 macOS,您可以找到名為 exe-name.sh 的腳本檔案,使用此腳本檔案來執行應用程式。
- 使用傳統 Java 命令執行程式
您也可以使用 vlxjre/bin/java 手動執行程式,此命令的格式與普通 java 命令相同。
我們可以在輸出目錄中看到名為 vlxjre 的資料夾,這是我們自訂的 JRE,加密後的 jar 檔案儲存在 vlxlib 資料夾中。
vlxjre/bin/java -jar vlxlib/xxx.jar
vlxjre/bin/java -cp vlxlib/xxx.jar MainClass
vlxjre/bin/java -cp "vlxlib/*" MainClass
vlxjre/bin/java -Xms512M -Xmx1024m -cp "vlxlib/*" MainClass
Java 8 目前不支援透過 vlxjre/bin/java -jar 執行。請使用 vlxjre/bin/java -cp xx MainClass
注意事項
如果此程式的目標平台是 macOS 或 Linux,但是在 Windows 上建構,請在首次啟動前在目標平台上執行 add-executable-permission.sh 以授予程式執行權限。
修改 exe 檔案的 JVM 參數
Windows
如果您需要修改 exe 檔案的 JVM 參數,請編輯 exe-name.json 並修改 JArgs 陣列中的值。
"JArgs": [
"-DParam1=value1",
"-DParam2=value2"
]
Linux 和 macOS
只需開啟腳本檔案並新增或修改 JVM 參數即可。
使用命令列工具加密 JavaSE 應用程式
組態檔
命令列工具需要指定一個任務檔案作為參數。
進入 protector4j/task-templates 資料夾,找到 java-task.yml,複製並修改一份。
# Available values: 8,11,17,21
javaVersion: 17
# The jar files that need to be encrypted
jarFiles: []
# Only encrypt the jar files, do not deploy the runtime
# This option is used while upgrading an existing application
onlyEncryptJarFiles: false
## [ Executable file information ]
# The executable file name
exeFileName: ''
# Hide command line window, only valid for Windows
hideConsole: false
# The main class of this Java Application
mainClass: ''
# The splash image
splash: ''
# JVM Options
jvmOptions: []
## [ Output Options ]
# The output folder
outputFolder: ''
# Create a new and unique folder for the application, the folder name is like p4j-<taskId>
createNewFolder: true
# Whether this is a JavaFX application
includeJavaFX: false
# Whether this a swt gui application
swtApplication: false
# Fixed key seed, only avaiable for licensed user
# Jars encrypted in different tasks can be used together with same key seed
keySeed: ''
# The target platforms
# available values: [win, linux, mac] or empty for current platform
platforms: []
執行加密任務
進入 Protector4J 資料夾並執行以下命令。
Linux 或 macOS
對於 macOS 使用者,您可以在 /Applictions/Protector4J.app/Contents/protector4j-mac 找到命令列工具。
./p4j -t java -f path-of-task-file
Windows
p4j -t java -f path-of-task-file
您可以執行 p4j --help 來查看詳細參數。
使用帳號資訊執行
./p4j -t java -f path-of-task-file -u email -p password
查看結果
加密任務完成後,請前往輸出資料夾查看結果。
執行加密後的應用程式
有三種方式可以執行加密後的應用程式
- 使用 exe 檔案執行
如果目標平台是 Windows,您可以使用加密任務產生的可執行檔來執行加密後的應用程式。
- 使用腳本執行
如果目標平台是 Linux 或 macOS,您可以找到名為 exe-name.sh 的腳本檔案,使用此腳本檔案來執行應用程式。
- 使用傳統 Java 命令執行程式
您也可以使用 vlxjre/bin/java 手動執行程式,此命令的格式與普通 java 命令相同。
我們可以在輸出目錄中看到名為 vlxjre 的資料夾,這是我們自訂的 JRE,加密後的 jar 檔案儲存在 vlxlib 資料夾中。
vlxjre/bin/java -jar vlxlib/xxx.jar
vlxjre/bin/java -cp vlxlib/xxx.jar MainClass
vlxjre/bin/java -cp "vlxlib/*" MainClass
vlxjre/bin/java -Xms512M -Xmx1024m -cp "vlxlib/*" MainClass
Java 8 目前不支援透過 vlxjre/bin/java -jar 執行。請使用 vlxjre/bin/java -cp xx MainClass
注意事項
如果此程式的目標平台是 macOS 或 Linux,但是在 Windows 上建構,請在首次啟動前在目標平台上執行 add-executable-permission.sh 以授予程式執行權限。