Справка по параметрам CLI

В примерах в этой статье используется команда p4j, предоставляемая после установки. Windows GUI устанавливается с помощью .exe, а macOS GUI — с помощью Protector4J.app внутри .dmg; формат установки GUI не влияет на синтаксис CLI ниже. Если установщик не включил CLI в PATH, запустите его из точки входа в командную строку, предоставленной в каталоге установки Protector4J.

p4j --help

1. Команды

p4j encode     <input.jar> <output.p4jx|output.jar> [options]
p4j javaapp    <input.jar> <output-dir> [options]
p4j springboot <input.jar> <output-dir> [options]
p4j tomcat     <input.war> <output-dir> [options]

Для низкоуровневой команды encode также можно опустить имя команды:

p4j input.jar output.p4jx [options]

2. Общие опции

ОпцииОписание
--no-jitЗапрет на метод защиты JIT, переход на выполнение через интерпретатор
--zip-overlay off|scannerОтключение или добавление режима совместимости с форматом ZIP для сканера, по умолчанию off
--compat-scanТолько сканирование и выход; параметры вывода не требуются
--compat-applyСканирование, применение консервативных рекомендаций, затем продолжение кодирования
--no-compat-excludesВ сочетании с --compat-apply — отсутствие автоматического добавления рекомендуемых классов исключения
--account-email <email>Электронная почта учётной записи лицензии
--account-password <password>Пароль учётной записи лицензии
--app-id <id>Идентификатор указанного приложения
--license-expires-in <sec>Запрос количества секунд действия пробной версии; ограничено политикой сервера

Поддерживаемые команды высокого уровня пакетирования:

ПараметрыОписание
--archive-suffix p4jx|jarРасширение архивируемого файла по умолчанию — p4jx; внутренняя структура не изменяется
--jvm-option <option>Запись скриптов запуска для macOS/Linux и Windows; каждый параметр используется один раз, возможно повторное использование

3. encode

p4j encode input.jar output.p4jx [options]
ПараметрыОписание
--runtime-major <N>Указание цели развёртки для просмотра ресурсов/Multi-Release, по умолчанию 21

4. javaapp

p4j javaapp input.jar output-dir [options]
ПараметрыОписание
--main <class>Указание основного класса запуска
--protect <rules>Правила для классов/пакетов, которые необходимо защитить, разделены запятыми; по умолчанию применяются ко всем классам.
--exclude <rules>Исключить из области защиты.
--javafx [<dir>]Включить JavaFX; опционально указать каталог локальных ресурсов.
--javafx-webviewОбязательное включение WebView.
--no-javafx-webviewОбязательное исключение WebView.
--no-javafxЯвное отключение JavaFX.

5. springboot

p4j springboot input.jar output-dir [options]
Параметры.Описание.
--main <class>Указание главного класса Spring Boot; по умолчанию читается Manifest
--protect <rules>Защита соответствующих классов в BOOT-INF/classes
--exclude <rules>Исключение классов или пакетов
--protect-lib <globs>Защита соответствующих JAR-файлов BOOT-INF/lib, указание через запятую
--layout p4jx-fat|fat|separateРежим вывода, по умолчанию p4jx-fat
--javafx [<dir>]Включение JavaFX; опционально указание каталога с локальными ресурсами
--javafx-webviewПринудительное включение WebView
--no-javafx-webviewПринудительное исключение WebView
--no-javafxЯвное отключение JavaFX

6. tomcat

p4j tomcat input.war output-dir [options]
ПараметрыОписание
--exclude <rules>Исключение классов или пакетов из WEB-INF/classes
--context </path>Путь контекста, по умолчанию /app
--append-appДобавление приложения в существующий пакет P4JX Tomcat
--tomcat-version auto|9|10Автоматическое обнаружение версии или принудительное указание, по умолчанию в CLI — auto
--precompile-jspПринудительная предкомпиляция JSP
--no-precompile-jspЗапрет на предкомпиляцию JSP

7. Синтаксис правил

com.example.SecretService   Один класс
com.example.service         Прямое совпадение пакетов
com.example.service.*       Прямое совпадение пакетов
com.example.service.**      Пакет и все его подпакеты
com/example/Secret.class    Путь к записи class

Несколько правил разделяются запятыми; если в shell присутствует *, необходимо использовать кавычки:

--protect 'com.example.**' --exclude 'com.example.dto.**,com.example.config.**'

8. Переменные окружения

ПеременныеОписание
P4JX_RUNTIME_JAVA_VERSIONЛинии обучения Java для верхнего уровня пакетирования: 8/11/17/21/25
P4JX_RUNTIME_PLATFORMID целевой платформы
P4JX_RUNTIME_CACHE_DIRКаталог кэширования загрузок VLX JRE
APP_JAVA_OPTSВременное добавление параметров JVM при запуске генерируемого приложения; поддерживается как на macOS/Linux, так и на Windows

Эквиваленты системных свойств Java для сложных сценариев прямого запуска JAR-файлов кодировщика:

-Dp4jx.runtime.java.version=<N>
-Dp4jx.runtime.platform=<platform>
-Dp4jx.runtime.cache.dir=<dir>

9. Примеры автоматизации

P4JX_RUNTIME_JAVA_VERSION=21 \
P4JX_RUNTIME_PLATFORM=linux-x64 \
p4j springboot build/app.jar release/linux-x64 \
  --compat-apply \
  --protect 'com.example.service.impl.**' \
  --exclude 'com.example.dto.**,com.example.config.**' \
  --jvm-option -Xms1g \
  --jvm-option -Xmx2g \
  --app-id com.example.app

Явные опции защиты/исключения и настройки макета имеют приоритет над автоматическими рекомендациями. Рекомендуется записывать окончательные параметры, значение SHA-256 входных данных и версию инструмента в качестве информации о происхождении релиза.

Примеры GUI, CLI, прямой редактирования run.sh/run.bat, скриптов запуска Tomcat и Windows PowerShell приведены в Настройка параметров запуска JVM.