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

OptionenErläuterungen
--no-jitDie Schutzmethode JIT ist verboten; stattdessen wird die Ausführung über den Interpreter genutzt.
--zip-overlay off|scannerDeaktivierung oder Hinzufügen der ZIP-kompatiblen Ansicht des Scanners, Standard ist off.
--compat-scanNur Scannen und Beenden; Ausgabeparameter sind nicht erforderlich.
--compat-applyScannen, Anwendung konservativer Empfehlungen und anschließendes Weiterverarbeiten zum Kodieren.
--no-compat-excludesIn 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:

OptionenBeschreibung
--archive-suffix p4jx|jarDateinamensendung 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]
OptionenBeschreibung
--runtime-major <N>Angabe des Ressourcenansichts-/Multi-Release-Entpackungsziels, Standardwert 21

4. javaapp

p4j javaapp input.jar output-dir [options]
OptionenBeschreibung
--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-webviewVerpflichtende Einbeziehung von WebView
--no-javafx-webviewVerpflichtende Ausschließung von WebView
--no-javafxJavaFX explizit deaktivieren

5. springboot

p4j springboot input.jar output-dir [options]
OptionenBeschreibung
--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|separateAusgabeformat, standardmäßig p4jx-fat
--javafx [<dir>]Aktivierung von JavaFX; optionaler Pfad für lokale Ressourcen
--javafx-webviewPflichtige Einbeziehung von WebView
--no-javafx-webviewPflichtige Ausklammerung von WebView
--no-javafxJavaFX explizit deaktivieren

6. tomcat

p4j tomcat input.war output-dir [options]
EinstellungenBeschreibung
--exclude <rules>Klassen oder Pakete in WEB-INF/classes ausschließen
--context </path>Context-Path, Standardwert: /app
--append-appAnwendung in ein vorhandenes P4JX-Tomcat-Paket aufnehmen
--tomcat-version auto|9|10Automatische Erkennung oder erzwungene Version, CLI-Standardwert: auto
--precompile-jspVorcompilierung von JSPs erzwingen
--no-precompile-jspVorverarbeitung 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

VariablenErläuterungen
P4JX_RUNTIME_JAVA_VERSIONJava-Trainingslinien für die Hoch-Level-Paketierung: 8/11/17/21/25
P4JX_RUNTIME_PLATFORMID der Zielplattform
P4JX_RUNTIME_CACHE_DIRCachordner für die VLX JRE-Download.
APP_JAVA_OPTSTemporä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.