保护 Java 类库
类库加密对应底层的 encode 命令。它只生成受保护归档,不复制运行时,也不生成启动脚本。
1. GUI 操作
-
在应用类型页面选择类库加密。如果你需要的是一个能直接启动的交付包,应改选 Java 应用、Spring Boot 或 Tomcat WAR。

-
选择输入 JAR、与实际加载环境一致的 Java 版本,以及目标平台,然后选择简单模式或高级模式。类库输出不携带
vlxjre,但这些选择仍然决定了归档所绑定的运行时身份,因此不要为了减少产物数量而把不同平台的输出混用。
-
简单模式会扫描输入 JAR,并应用类库加密所支持的扫描器 ZIP 覆盖层和归档后缀建议。它仍然会加密输入 JAR 中的所有
.class条目,其它资源保持原样。 -
高级模式可以配置:
- 对受保护方法禁用 JIT:让受保护方法只在解释器中执行;
- 追加扫描器 ZIP 覆盖层:向直接解析 ZIP 中央目录的工具提供公开资源和元数据桩;
- 兼容性扫描…:检查 ZIP 访问、后缀假设、JNI 与原生类使用、运行时读取字节码等风险。
-
在输出页填写完整的输出文件名,通常使用
.p4jx后缀;只有当集成方硬性要求.jar时才改用.jar。高级页的归档后缀设置或扫描建议,会在.p4jx和.jar之间切换已选的文件名。复核 Java 版本、目标平台、JIT 设置和扫描器覆盖层,然后点击运行保护。单平台任务会精确写入你所选的文件路径。选择多个目标平台时,GUI 会在该文件所在目录下按平台建立子目录,把对应的归档分别写进去。
2. 适用场景
- 保护属于其它受控 P4JX 应用一部分的自有 JAR;
- 由已有的启动器装载 P4JX 归档;
- 需要自行管理完整交付目录的高级集成。
如果你要构建的是可直接运行的普通应用、Spring Boot 应用或 Tomcat 部署包,请改用对应的打包命令。
3. 基本命令
p4j encode library.jar library.p4jx
也可以使用简写形式:
p4j library.jar library.p4jx
encode 会精确写入你给出的输出文件名,因此下面两条命令生成的都是 P4JX 归档:
p4j encode library.jar library.p4jx
p4j encode library.jar library.jar
4. ZIP 覆盖层
p4j encode library.jar library.p4jx \
--zip-overlay scanner
覆盖层只包含公开资源、目录和元数据桩,用于让直接解析 ZIP 中央目录的工具仍然可用。它不会暴露真实的受保护方法,也不会把 P4JX 归档变成普通 JAR。
5. 运行时要求
底层的 encode 不生成 vlxjre,因此你必须自行提供与编码时身份匹配的 VLX 运行时。不要:
- 用普通的 OpenJDK 或 Oracle JDK 加载归档;
- 从其它版本的输出包中复制
lib/modules或原生库; - 把归档与来自不同目标平台、不同 JDK 训练线或不同编码任务的运行时搭配使用。
对于普通交付项目,优先使用高层打包命令,它会自动维护好这些对应关系。
6. 许可
生成归档时必须成功取得服务器签发的许可,并嵌入结果中。正式账号和试用模式走的是同一套归档校验流程。在自动化环境中,绝不要把密码硬编码在导出的任务脚本里。