Справка по параметрам 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_PLATFORM | ID целевой платформы |
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.