保护 Spring Boot 应用程序
入门视频
下载
访问 https://protector4j.com/download 下载最新版本
安装
Windows 和 Linux
无需特殊安装步骤,只需下载压缩包并解压即可。
macOS
下载 dmg 文件,将 Protector4J 拖动到 Applications。该工具的实际内容位于 /Applications/Protector4J.app/Contents/protector4j-mac

使用 GUI 工具加密 Spring Boot 应用程序
进入 Protector4J 文件夹,执行 p4j-ui[.exe],您将看到如下用户界面。
macOS 用户只需像普通 Mac 应用程序一样双击 Protector4J.app 即可。

登录
如果您已购买许可证,请点击右上角的登录按钮并输入您的用户信息。如果没有许可证,您仍然可以试用此工具。

选择应用类型
在应用类型页面点击 "Spring Boot 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 参数即可。
使用 CLI 工具加密 Spring Boot 应用程序
配置文件
CLI 工具需要指定任务文件作为参数。
进入 protector4j/task-templates 文件夹,找到 spring-boot-task.yml,复制并修改。
# 可用值: 8,11,17,21
javaVersion: 17
# Spring Boot 应用程序的 jar 文件
springBootJarFile: ''
# 仅加密 jar 文件,不部署运行时
# 升级现有应用程序时使用此选项
onlyEncryptJarFiles: false
## [ 可执行文件信息 ]
# 可执行文件名称
exeFileName: ''
# 隐藏命令行窗口,仅对 Windows 有效
hideConsole: false
# 启动画面图片
splash: ''
# JVM 选项
jvmOptions: []
## [ 输出选项 ]
# 输出文件夹
outputFolder: ''
# 为应用程序创建新的唯一文件夹,文件夹名类似 p4j-<taskId>
createNewFolder: true
# 是否为 JavaFX 应用程序
includeJavaFX: false
# 是否为 SWT GUI 应用程序
swtApplication: false
# 固定密钥种子,仅对已授权用户有效
# 使用相同密钥种子加密的 jar 可以混合使用
keySeed: ''
# 目标平台,留空表示当前平台
# 可用值: [win, linux, mac]
platforms: []
## [ Windows exe 文件信息(可选,仅对 Windows 有效)]
icon: ''
productName: ''
productVersion: ''
fileVersion: ''
fileDescription: ''
companyName: ''
legalCopyright: ''
执行加密任务
进入 Protector4J 文件夹,执行以下命令。
Linux 或 macOS
macOS 用户可以在 /Applictions/Protector4J.app/Contents/protector4j-mac 找到 CLI 工具。
./p4j -t spring-boot -f path-of-task-file
Windows
p4j -t spring-boot -f path-of-task-file
执行 p4j --help 查看详细参数。
使用账号信息运行
./p4j -t spring-boot -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 以授予程序执行权限。