GUI 使用指南

GUI 以向导方式完成每一次保护任务,流程如下:

应用类型 → 输入、运行时、平台 → 简单或高级参数 → Windows EXE 启动器(可选) → 输出确认 → 执行

1. 应用类型

GUI 选项输入输出对应的 CLI 命令
Java 应用普通可执行 JAR完整的应用目录javaapp
Spring BootSpring Boot 应用完整的应用目录springboot
Tomcat WARWAR内嵌 Tomcat 的目录tomcat
类库加密任意 JAR单个 P4JX 归档encode

类型选错,可能导致主类、依赖、Web 资源或启动器没有被正确处理。

应用类型页面

2. 输入、运行时与目标平台

一次向导任务处理一个输入 JAR 或 WAR。随后需要选择:

  • Java 版本:8、11、17、21 或 25,默认为 21。
  • 目标平台:可以一次选择多个。
  • 模式:简单模式或高级模式。
  • 生成 Windows 应用 EXE:可选,前提是至少选中一个 Windows 目标平台。

选择多个平台时,工具会为每个平台生成一个独立的目录。

输入、Java 版本和目标平台页面

3. 简单模式

简单模式适合绝大多数首次打包的场景。离开输入页时,工具会执行一次兼容性扫描,并根据扫描结果决定:

  • 建议排除哪些类;
  • 是否启用 JavaFX 和 WebView;
  • 是否启用扫描器 ZIP 覆盖层;
  • 是否改用 .jar 归档后缀;
  • Spring Boot 采用哪种布局;
  • 使用 Tomcat 9 还是 10.1。

扫描给出的是静态分析的建议,而不是真实运行测试的结果。打包完成后,仍然要在目标平台上实际测试应用。

4. 高级模式

高级模式可以手工设置归档后缀,决定是否禁用 JIT,追加扫描器 ZIP 覆盖层,设置 JVM 启动选项,定义排除规则,以及配置各应用类型专有的选项。

完整的操作说明、每个选项的含义、默认值以及各应用类型之间的差异,参见 Protector4J 高级模式设置

普通 Java 应用的高级参数

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