Referenz für CLI-Parameter
In den Beispielen dieses Artikels wird der nach der Installation bereitgestellte Befehl p4j verwendet. Die Windows-GUI wird über .exe installiert, die macOS-GUI über Protector4J.app innerhalb von .dmg; die Art der GUI-Installation ändert die folgende CLI-Syntax nicht. Falls der Installer die CLI nicht in PATH aufgenommen hat, führen Sie sie über den im Installationsverzeichnis von Protector4J bereitgestellten Eingangspunkt der Kommandozeile aus.
p4j --help
1. Befehle
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]
Für die untere Ebene encode kann auch der Befehlname weggelassen werden:
p4j input.jar output.p4jx [options]
2. Allgemeine Optionen
| Optionen | Erläuterungen |
|---|---|
--no-jit | Die Schutzmethode JIT ist verboten; stattdessen wird die Ausführung über den Interpreter genutzt. |
--zip-overlay off|scanner | Deaktivierung oder Hinzufügen der ZIP-kompatiblen Ansicht des Scanners, Standard ist off. |
--compat-scan | Nur Scannen und Beenden; Ausgabeparameter sind nicht erforderlich. |
--compat-apply | Scannen, Anwendung konservativer Empfehlungen und anschließendes Weiterverarbeiten zum Kodieren. |
--no-compat-excludes | In Kombination mit --compat-apply werden keine empfohlenen Ausnahmeklassen automatisch hinzugefügt. |
--account-email <email> | E-Mail-Adresse des Lizenzkontos. |
--account-password <password> | Passwort des Lizenzkontos. |
--app-id <id> | Angabe der Anwendungs-ID |
--license-expires-in <sec> | Anfrage nach der gültigen Anzahl an Sekunden für den Test, begrenzt durch Serverrichtlinien |
Unterstützte Befehle für die Hoch-Level-Paketierung:
| Optionen | Beschreibung |
|---|---|
--archive-suffix p4jx|jar | Dateinamensendung für das generierte Archiv, Standardwert p4jx; die interne Formatierung bleibt unverändert |
--jvm-option <option> | Erstellung von Startskripten für macOS/Linux und Windows; jeder Parameter wird einmal verwendet, kann jedoch wiederholt werden |
3. encode
p4j encode input.jar output.p4jx [options]
| Optionen | Beschreibung |
|---|---|
--runtime-major <N> | Angabe des Ressourcenansichts-/Multi-Release-Entpackungsziels, Standardwert 21 |
4. javaapp
p4j javaapp input.jar output-dir [options]
| Optionen | Beschreibung |
|---|---|
--main <class> | Angabe der Hauptklasse zum Starten |
--protect <rules> | Regeln für Klassen/Pakete, die geschützt werden sollen, getrennt durch Kommas; standardmäßig alle Klassen angewendet |
--exclude <rules> | Aus dem Schutzumfang ausschließen |
--javafx [<dir>] | JavaFX aktivieren; optionaler Pfad für lokale Ressourcen |
--javafx-webview | Verpflichtende Einbeziehung von WebView |
--no-javafx-webview | Verpflichtende Ausschließung von WebView |
--no-javafx | JavaFX explizit deaktivieren |
5. springboot
p4j springboot input.jar output-dir [options]
| Optionen | Beschreibung |
|---|---|
--main <class> | Angabe der Hauptklasse von Spring Boot; standardmäßig Lesevorgang des Manifests |
--protect <rules> | Schutz der in BOOT-INF/classes enthaltenen passenden Klassen |
--exclude <rules> | Ausklammern von Klassen oder Paketen |
--protect-lib <globs> | Schutz der passenden BOOT-INF/lib JAR-Dateien, getrennt durch Kommas |
--layout p4jx-fat|fat|separate | Ausgabeformat, standardmäßig p4jx-fat |
--javafx [<dir>] | Aktivierung von JavaFX; optionaler Pfad für lokale Ressourcen |
--javafx-webview | Pflichtige Einbeziehung von WebView |
--no-javafx-webview | Pflichtige Ausklammerung von WebView |
--no-javafx | JavaFX explizit deaktivieren |
6. tomcat
p4j tomcat input.war output-dir [options]
| Einstellungen | Beschreibung |
|---|---|
--exclude <rules> | Klassen oder Pakete in WEB-INF/classes ausschließen |
--context </path> | Context-Path, Standardwert: /app |
--append-app | Anwendung in ein vorhandenes P4JX-Tomcat-Paket aufnehmen |
--tomcat-version auto|9|10 | Automatische Erkennung oder erzwungene Version, CLI-Standardwert: auto |
--precompile-jsp | Vorcompilierung von JSPs erzwingen |
--no-precompile-jsp | Vorverarbeitung von JSP ist verboten. |
7. Syntax der Regeln
com.example.SecretService Einzelleiste
com.example.service Direkte Paketübereinstimmung
com.example.service.* Direkte Paketübereinstimmung
com.example.service.** Paket und alle Unterpakete
com/example/Secret.class Pfad zur Zeile class
Mehrere Regeln werden durch Kommas getrennt; wenn * in der Shell verwendet wird, müssen Anführungszeichen hinzugefügt werden:
--protect 'com.example.**' --exclude 'com.example.dto.**,com.example.config.**'
8. Umgebungsvariablen
| Variablen | Erläuterungen |
|---|---|
P4JX_RUNTIME_JAVA_VERSION | Java-Trainingslinien für die Hoch-Level-Paketierung: 8/11/17/21/25 |
P4JX_RUNTIME_PLATFORM | ID der Zielplattform |
P4JX_RUNTIME_CACHE_DIR | Cachordner für die VLX JRE-Download. |
APP_JAVA_OPTS | Temporäre Hinzufügung von JVM-Parametern beim Ausführen der generierten Anwendung; unterstützt sowohl macOS/Linux als auch Windows. |
Äquivalente Java-Systemeigenschaften für fortgeschrittene Szenarien, in denen der Encoder-JAR direkt gestartet werden soll:
-Dp4jx.runtime.java.version=<N>
-Dp4jx.runtime.platform=<platform>
-Dp4jx.runtime.cache.dir=<dir>
9. Beispiele für die Automatisierung.
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
Explizite Schutz-/Ausnahmeeinstellungen sowie Layout-Optionen überschreiben die automatischen Vorschläge. Es wird empfohlen, die endgültigen Parameter, den Eingab-SHA-256-Wert sowie die Tool-Version als Veröffentlichungsprovenance aufzubewahren.
Beispiele für GUI, CLI, direkte Bearbeitung von run.sh/run.bat, Tomcat-Startskripte sowie Windows PowerShell finden Sie in Konfiguration der JVM-Startparameter.