保护 JavaSE 应用程序

入门视频

▶️ YouTube

▶️ 哔哩哔哩

下载

访问 https://protector4j.com/download 下载最新版本

安装

Windows 和 Linux

无需特殊安装步骤,只需下载压缩包并解压即可。

macOS

下载 dmg 文件并将 Protector4J 拖到 Applications该工具的实际内容在…… /Applications/Protector4J.app/Contents/protector4j-mac

使用 GUI 工具加密 JavaSE 应用程序

进入 Protector4J 文件夹,执行 p4j-ui[.exe]您将看到以下用户界面。

对于 macOS 用户,只需像打开普通 Mac 应用程序一样双击 Protector4J.app 即可。

登录

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

选择应用程序类型

在应用程序类型页面上,点击“JavaSE 应用程序”按钮。

选择需要加密的 jar/war 文件。

选择要加密的 jar/war 文件,您可以选择一个或多个文件。

选项

仅加密 jar 文件

仅加密 jar 文件,无需部署整个 JRE。此选项通常与密钥种子功能结合使用,以更新现有程序。

创建可执行文件

请创建用于启动应用程序的可执行文件,请勿添加 .exe 扩展名。

隐藏控制台

此选项仅对 Windows 上的 GUI 程序有效,用于在程序执行期间隐藏命令行窗口。

JVM 选项

设置 JVM 选项,例如 -Xmx 和 -Xms,用空格或换行符分隔。

输出

Java 版本选择

选择 Java 版本,支持 Java 8、Java 11、Java 17 和 Java 21。

创建新文件夹

默认情况下,加密任务将在输出文件夹中创建一个名为 p4j-[任务 ID] 的文件,输出结果将存储在此文件夹中。

包括 JavaFX

如果是 JavaFX 应用程序,请选择此选项

SWT应用程序

如果是 SWT 应用程序,请选择此选项。

KeySeed

默认情况下,加密任务会向服务器请求随机密钥进行加密。不同加密任务生成的文件不能同时使用。如果指定了密钥种子 (KeySeed),则同一个密钥种子将生成相同的加密密钥。此选项可与之前的“仅加密 Jar 文件”选项结合使用,以更新现有应用程序。此选项仅对已授权用户有效。

执行加密任务

请稍等片刻,加密任务完成后,您可以在输出文件夹中看到加密应用程序的输出结果。

运行加密应用程序

运行加密应用程序有三种方法。

  1. 使用 exe 文件运行

如果目标平台是 Windows,则可以使用加密任务期间生成的可执行文件运行加密应用程序。

  1. 使用脚本运行

如果目标平台是 Linux 或 macOS,您可以找到一个名为 的脚本文件。 exe-name.sh您可以使用此脚本文件运行应用程序。

  1. 使用传统的 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 参数

视窗

如果需要修改exe文件的JVM参数,请编辑 exe-name.json 并修改 JArgs 数组中的值。

"JArgs": [
  "-DParam1=value1",
  "-DParam2=value2"
]

Linux 和 macOS

只需打开脚本文件,添加或修改 JVM 参数即可。

使用 CLI 工具加密 JavaSE 应用程序。

配置文件

CLI 工具需要指定一个任务文件作为参数。

前往 protector4j/task-templates 文件夹,查找 java-task.yml复制并修改一个。

# Available values: 8,11,17,21
javaVersion: 17

# The jar files that need to be encrypted
jarFiles: []
# Only encrypt the jar files, do not deploy the runtime
# This option is used while upgrading an existing application
onlyEncryptJarFiles: false

## [ Executable file information ]
# The executable file name
exeFileName: ''
# Hide command line window, only valid for Windows
hideConsole: false
# The main class of this Java Application
mainClass: ''
# The splash image
splash: ''
# JVM Options
jvmOptions: []

## [ Output Options ]
# The output folder
outputFolder: ''
# Create a new and unique folder for the application, the folder name is like p4j-<taskId>
createNewFolder: true
# Whether this is a JavaFX application
includeJavaFX: false
# Whether this a swt gui application
swtApplication: false
# Fixed key seed, only avaiable for licensed user
# Jars encrypted in different tasks can be used together with same key seed
keySeed: ''
# The target platforms
# available values: [win, linux, mac] or empty for current platform
platforms: []

执行加密任务。

进入 Protector4J 文件夹并执行以下命令。

Linux 或 macOS

macOS 用户可以在以下位置找到 CLI 工具: /Applictions/Protector4J.app/Contents/protector4j-mac

./p4j -t java -f path-of-task-file

视窗

p4j -t java -f path-of-task-file

你可以执行 p4j --help 查看详细参数。

使用帐户信息运行

./p4j -t java -f path-of-task-file -u email -p password

查看结果

加密任务完成后,请前往输出文件夹查看结果。

运行加密应用程序

运行加密应用程序有三种方法。

  1. 使用 exe 文件运行

如果目标平台是 Windows,则可以使用加密任务生成的可执行文件运行加密应用程序。

  1. 使用脚本运行

如果目标平台是 Linux 或 macOS,您可以找到一个名为 的脚本文件。 exe-name.sh您可以使用此脚本文件运行应用程序。

  1. 使用传统的 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 在目标平台上,在首次启动前授予程序执行权限。