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 已经不再导出运行脚本。