保护 Java 类库

Library Encryption 对应低层 encode 命令,只生成一个受保护归档,不复制运行时,也不生成应用启动脚本。

1. GUI 操作

  1. 在应用类型页选择 Library Encryption。如果需要一个能直接启动的交付包,应改选 Java ApplicationSpring BootTomcat WAR

    选择 Library Encryption

  2. 选择输入 JAR、与实际加载环境一致的 Java 版本和目标平台,再选择简单模式或高级模式。类库输出不携带 vlxjre,但这些选择仍用于确定归档对应的运行时身份;不要为了减少产物数量而把不同平台的输出混用。

    选择类库 JAR、Java 版本、目标平台和模式

  3. 简单模式会扫描输入 JAR,自动应用 Library Encryption 支持的扫描器 ZIP overlay 和归档后缀建议。它仍会加密输入 JAR 中的所有 .class 条目,其他资源保持未加密。

  4. 高级模式可按需设置:

    • Disable JIT for protected methods:让保护方法仅在解释器中执行;
    • Append scanner ZIP overlay:向直接解析 ZIP 中央目录的工具提供公开资源和元数据桩;
    • Compatibility scan…:扫描 ZIP 访问、后缀假设、JNI/原生类和运行时字节码读取等兼容性风险。
  5. 在输出页选择完整的输出文件名,通常使用 .p4jx;仅在集成程序硬编码要求 .jar 后缀时才使用 .jar。高级页的 Archive suffix 选择或扫描建议会同步已选文件的 .p4jx/.jar 后缀。复核 Java 版本、目标平台、JIT、scanner overlay,然后点击 Run protection

    单平台任务使用所选的精确文件路径。选择多个目标平台时,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 overlay

p4j encode library.jar library.p4jx \
  --zip-overlay scanner

overlay 只包含公开资源、目录和元数据桩,用于兼容直接解析 ZIP 中央目录的工具。它不会暴露真实保护方法,也不会把 P4JX 变成普通 JAR。

5. 运行时要求

低层 encode 不生成 vlxjre,使用方必须提供与编码时身份匹配的 VLX 运行时。不要:

  • 使用普通 OpenJDK/Oracle JDK 加载;
  • 从另一版本输出包复制 lib/modules 或 native 库;
  • 把不同目标平台、JDK 训练线或编码任务的运行时与归档混用。

对于普通交付项目,优先使用高层打包命令自动维护这些关系。

6. 许可

生成归档时必须成功取得并嵌入服务器签发的许可。正式账号和试用模式遵循相同的归档校验流程。自动化环境不要在导出的任务脚本中硬编码密码。