Protéger les bibliothèques Java
Le chiffrement de la bibliothèque correspond à la commande de bas niveau encode. Il produit uniquement l'archive protégée : il ne copie aucun runtime et ne crée pas de scripts de démarrage.
1. Dans l'interface graphique
-
Sur la page du type d'application, choisissez Chiffrement de la bibliothèque. S'il vous faut un paquet directement exécutable, choisissez plutôt Application Java, Spring Boot ou Tomcat WAR.

-
Sélectionnez le JAR d'entrée, la version de Java correspondant à l'environnement qui le chargera et les plates-formes cibles, puis choisissez le mode simple ou avancé. Une sortie de bibliothèque ne contient pas de
vlxjre, mais ces choix déterminent tout de même l'identité de runtime liée à l'archive : ne mélangez donc pas les sorties de plates-formes différentes dans le seul but de réduire le nombre d'artefacts.
-
Le mode simple analyse le JAR d'entrée et applique les recommandations de superposition ZIP pour scanners et de suffixe d'archive prises en charge par le chiffrement de bibliothèque. Toutes les entrées
.classdu JAR restent chiffrées et les autres ressources demeurent intactes. -
Le mode avancé permet de régler :
- Désactiver le JIT pour les méthodes protégées : les méthodes protégées ne s'exécutent que dans l'interpréteur.
- Ajouter la superposition du scanner ZIP : expose ressources publiques et ébauches de métadonnées aux outils qui lisent directement le répertoire central du ZIP.
- Analyse de compatibilité... : recherche les risques tels que l'accès au ZIP, les hypothèses sur les suffixes, l'usage de classes JNI et natives, et la lecture de bytecode à l'exécution.
-
Sur la page de sortie, saisissez le nom complet du fichier de sortie, normalement avec le suffixe
.p4jx. N'utilisez.jarque si une intégration l'exige. Le réglage Suffixe d'archive de la page avancée, ou la recommandation de l'analyse, bascule le nom choisi entre.p4jxet.jar. Vérifiez la version de Java, les plates-formes cibles, le réglage du JIT et la superposition pour scanners, puis cliquez sur Exécuter la protection.Une tâche sur une seule plate-forme écrit exactement au chemin choisi. Si vous sélectionnez plusieurs plates-formes cibles, l'interface crée un sous-répertoire par plate-forme à côté de ce fichier et y écrit l'archive correspondante.
2. Quand l'utiliser
- Pour protéger vos propres JAR qui font partie d'une autre application P4JX que vous maîtrisez ;
- pour charger une archive P4JX depuis un lanceur existant ;
- pour des intégrations avancées où vous gérez vous-même l'ensemble du répertoire de livraison.
Si vous construisez une application exécutable ordinaire, une application Spring Boot ou un déploiement Tomcat, employez la commande d'empaquetage correspondante.
3. Commandes de base
p4j encode library.jar library.p4jx
La forme abrégée fonctionne aussi :
p4j library.jar library.p4jx
encode écrit exactement le nom de sortie que vous indiquez ; les deux commandes produisent donc une archive P4JX :
p4j encode library.jar library.p4jx
p4j encode library.jar library.jar
4. Superposition ZIP
p4j encode library.jar library.p4jx \
--zip-overlay scanner
La superposition ne contient que des ressources publiques, des répertoires et des ébauches de métadonnées, afin que les outils lisant directement le répertoire central du ZIP continuent de fonctionner. Elle n'expose pas les méthodes protégées réelles et ne transforme pas l'archive P4JX en JAR ordinaire.
5. Exigences du runtime
La commande encode de bas niveau ne produit pas de vlxjre : vous devez fournir vous-même un runtime VLX correspondant à l'identité utilisée lors de l'encodage. À éviter :
- charger l'archive avec un OpenJDK ou un Oracle JDK ordinaire ;
- copier
lib/modulesou des bibliothèques natives depuis un paquet d'une autre version ; - associer l'archive à un runtime d'une autre plate-forme cible, d'une autre ligne du JDK ou d'un autre encodage.
Pour les projets de livraison courants, préférez les commandes d'empaquetage de plus haut niveau, qui maintiennent ces correspondances à votre place.
6. Licence
La production d'une archive exige une licence délivrée par le serveur, qui est intégrée au résultat. Les comptes sous licence et le mode d'essai suivent la même vérification d'archive. En environnement automatisé, ne codez jamais le mot de passe en dur dans un script de tâche exporté.