Référence des paramètres CLI
Les exemples dans ce document utilisent la commande p4j fournie après l’installation. La GUI pour Windows s’installe via .exe, tandis que la GUI pour macOS s’installe via Protector4J.app à l’intérieur de .dmg ; la forme d’installation de la GUI ne modifie pas la syntaxe CLI ci-dessous. Si l’installateur n’a pas inclus la CLI dans PATH, exécutez-la depuis l’entrée en ligne de commande fournie dans le répertoire d’installation de Protector4J.
p4j --help
1. Commandes
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]
Pour la couche inférieure encode, le nom de la commande peut également être omis:
p4j input.jar output.p4jx [options]
2. Options générales
| Options | Description |
|---|---|
--no-jit | Interdire la méthode de protection JIT et passer à l’exécution par interpréteur |
--zip-overlay off|scanner | Désactiver ou ajouter une vue compatible ZIP pour le scanneur, valeur par défaut: off |
--compat-scan | Seulement scanner puis quitter; aucune sortie de paramètres requise |
--compat-apply | Scanner, appliquer des recommandations prudentes, puis continuer l’encodage |
--no-compat-excludes | En combinaison avec --compat-apply, ne pas ajouter automatiquement les classes d’exclusion recommandées |
--account-email <email> | Adresse e-mail du compte de licence |
--account-password <password> | Mot de passe du compte de licence |
--app-id <id> | Identifiant de l’application spécifiée |
--license-expires-in <sec> | Demande du nombre de secondes valables pour l’essai, soumise aux politiques du serveur |
Commandes de packaging de haut niveau prises en charge:
| Options | Description |
|---|---|
--archive-suffix p4jx|jar | Suffisant du fichier d’archive généré, par défaut p4jx ; le format interne n’est pas modifié |
--jvm-option <option> | Écriture de scripts de démarrage pour macOS/Linux et Windows; chaque paramètre est utilisé une fois, mais peut être répété |
3. encode
p4j encode input.jar output.p4jx [options]
| Options | Description |
|---|---|
--runtime-major <N> | Spécifier la cible de dépliement pour la vue des ressources/Multi-Release, valeur par défaut: 21 |
4. javaapp
p4j javaapp input.jar output-dir [options]
| Options | Description |
|---|---|
--main <class> | Spécifier la classe principale d’initialisation |
--protect <rules> | Règles pour les classes/pakets à protéger, séparées par des virgules; toutes les classes sont appliquées par défaut. |
--exclude <rules> | Exclure de la protection. |
--javafx [<dir>] | Activer JavaFX; chemin du répertoire des ressources locales optionnel. |
--javafx-webview | Forcer l’inclusion de WebView. |
--no-javafx-webview | Forcer l’exclusion de WebView. |
--no-javafx | Désactiver explicitement JavaFX. |
5. springboot
p4j springboot input.jar output-dir [options]
| Options. | Description. |
|---|---|
--main <class> | Spécifier la classe principale de Spring Boot; lecture par défaut du Manifest |
--protect <rules> | Assurer la protection des classes correspondantes dans BOOT-INF/classes |
--exclude <rules> | Exclure des classes ou des packages |
--protect-lib <globs> | Assurer la protection des JAR correspondants de BOOT-INF/lib, séparés par des virgules |
--layout p4jx-fat|fat|separate | Afficher le layout, par défaut p4jx-fat |
--javafx [<dir>] | Activer JavaFX; chemin du répertoire des ressources locales optionnel |
--javafx-webview | Forcer l’inclusion de WebView |
--no-javafx-webview | Forcer l’exclusion de WebView |
--no-javafx | Désactiver explicitement JavaFX |
6. tomcat
p4j tomcat input.war output-dir [options]
| Options | Description |
|---|---|
--exclude <rules> | Exclure des classes ou des packages de WEB-INF/classes |
--context </path> | Chemin contextuel, par défaut /app |
--append-app | Ajouter l’application à un package P4JX Tomcat existant |
--tomcat-version auto|9|10 | Détection automatique ou version forcée, par défaut en CLI auto |
--precompile-jsp | Forcer la précompilation des JSP |
--no-precompile-jsp | Interdiction de la pré-compilation des JSP |
7. Syntaxe des règles
com.example.SecretService Classe unique
com.example.service Correspondance de package direct
com.example.service.* Correspondance de package direct
com.example.service.** Package et tous ses sous-packages
com/example/Secret.class Chemin de l’entrée class
Plusieurs règles sont séparées par des virgules; des guillemets doivent être utilisés lorsque * est présent dans le shell:
--protect 'com.example.**' --exclude 'com.example.dto.**,com.example.config.**'
8. Variables d’environnement
| Variables | Description |
|---|---|
P4JX_RUNTIME_JAVA_VERSION | Lignes d’entraînement Java utilisées pour le packaging de haut niveau: 8/11/17/21/25 |
P4JX_RUNTIME_PLATFORM | ID de la plateforme cible |
P4JX_RUNTIME_CACHE_DIR | Dossier de cache pour le téléchargement du VLX JRE |
APP_JAVA_OPTS | Ajout temporaire de paramètres JVM lors de l’exécution de l’application générée; compatible avec macOS/Linux et Windows |
Équivalents des propriétés système Java pour les scénarios avancés où il est possible de lancer directement le JAR de l’encodeur:
-Dp4jx.runtime.java.version=<N>
-Dp4jx.runtime.platform=<platform>
-Dp4jx.runtime.cache.dir=<dir>
9. Exemples d’automatisation
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
Les options explicites de protection/exclusion ainsi que les paramètres de disposition prennent le pas sur les suggestions automatiques. Il est recommandé de consigner les paramètres finaux, l’SHA-256 des entrées et la version de l’outil afin d’en assurer la provenance lors de la publication.
Des exemples de GUI, de CLI, d’édition directe de run.sh/run.bat, de scripts de démarrage Tomcat ainsi que de Windows PowerShell se trouvent dans Configuration des paramètres de démarrage de la JVM.