Защита библиотек Java
Шифрование библиотеки соответствует низкоуровневой команде encode. Оно создаёт только защищённый архив: среда выполнения не копируется, сценарии запуска не создаются.
1. В графическом интерфейсе
-
На странице типа приложения выберите Шифрование библиотеки. Если нужен пакет, который можно запустить сразу, выберите вместо этого Java приложение, Spring Boot или Tomcat WAR.

-
Выберите входной JAR, версию Java, соответствующую среде, где он будет загружаться, и целевые платформы, затем укажите простой или расширенный режим. В выводе библиотеки нет каталога
vlxjre, но этот выбор всё равно определяет привязанную к архиву среду выполнения, поэтому не смешивайте выводы разных платформ ради уменьшения числа артефактов.
-
Простой режим сканирует входной JAR и применяет поддерживаемые рекомендации по ZIP-слою для сканеров и суффиксу архива. Все записи
.classв JAR по-прежнему шифруются, остальные ресурсы остаются нетронутыми. -
В расширенном режиме можно задать:
- Отключить JIT для защищённых методов — защищённые методы выполняются только в интерпретаторе;
- Добавить ZIP-слой для сканеров — предоставляет публичные ресурсы и заготовки метаданных средствам, которые читают центральный каталог ZIP напрямую;
- Сканирование совместимости... — проверяет риски: обращение к ZIP, предположения о суффиксах, использование классов JNI и нативных классов, чтение байт-кода во время выполнения.
-
На странице вывода укажите полное имя выходного файла — обычно с суффиксом
.p4jx. Используйте.jar, только если этого требует интеграция. Настройка Суффикс архива на странице расширенных параметров или рекомендация сканирования переключает выбранное имя между.p4jxи.jar. Проверьте версию Java, целевые платформы, параметр JIT и слой для сканеров, затем нажмите Запустить защиту.Задача для одной платформы записывает файл ровно по выбранному пути. Если выбрано несколько целевых платформ, интерфейс создаёт рядом с этим файлом подкаталог для каждой платформы и записывает в них соответствующие архивы.
2. Когда это нужно
- Для защиты собственных JAR, входящих в другое подконтрольное вам приложение P4JX;
- для загрузки архива 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. Лицензия
Для создания архива нужна лицензия, выданная сервером; она встраивается в результат. Учётные записи с лицензией и пробный режим проходят одну и ту же проверку архива. В автоматизированных средах никогда не оставляйте пароль в экспортированном сценарии задания.