Java-Bibliotheken schützen
Die Bibliotheksverschlüsselung entspricht dem systemnahen Befehl encode. Sie erzeugt ausschließlich das geschützte Archiv — sie kopiert keine Runtime und erstellt keine Startskripte.
1. Vorgehen in der GUI
-
Wählen Sie auf der Seite „Anwendungstyp“ die Option Bibliotheksverschlüsselung. Wenn Sie ein direkt startfähiges Auslieferungspaket benötigen, wählen Sie stattdessen Java-Anwendung, Spring Boot oder Tomcat WAR.

-
Wählen Sie das Eingabe-JAR, die zur späteren Ladeumgebung passende Java-Version und die Zielplattformen und entscheiden Sie sich für den einfachen oder den erweiterten Modus. Eine Bibliotheksausgabe enthält kein
vlxjre, doch diese Auswahl legt weiterhin die an das Archiv gebundene Runtime-Identität fest. Mischen Sie deshalb keine Ausgaben verschiedener Plattformen, nur um die Zahl der Artefakte zu verringern.
-
Der einfache Modus untersucht das Eingabe-JAR und wendet die von der Bibliotheksverschlüsselung unterstützten Empfehlungen zu Scanner-ZIP-Overlay und Archivsuffix an. Alle
.class-Einträge im JAR werden weiterhin verschlüsselt, die übrigen Ressourcen bleiben unverändert. -
Im erweiterten Modus konfigurieren Sie:
- JIT für geschützte Methoden deaktivieren: Geschützte Methoden laufen nur im Interpreter.
- Scanner-ZIP-Overlay anhängen: Stellt Werkzeugen, die das ZIP-Zentralverzeichnis direkt auswerten, öffentliche Ressourcen und Metadaten-Stubs bereit.
- Kompatibilitätsscan…: Prüft Risiken wie ZIP-Zugriff, Annahmen über Suffixe, Nutzung von JNI- und nativen Klassen sowie das Lesen von Bytecode zur Laufzeit.
-
Geben Sie auf der Ausgabeseite den vollständigen Ausgabedateinamen an — üblicherweise mit dem Suffix
.p4jx. Verwenden Sie.jarnur, wenn eine Integration darauf besteht. Die Einstellung Archivsuffix auf der erweiterten Seite oder die Scanempfehlung wechselt den gewählten Dateinamen zwischen.p4jxund.jar. Prüfen Sie Java-Version, Zielplattformen, JIT-Einstellung und Scanner-Overlay und klicken Sie dann auf Schutz ausführen.Bei einer Aufgabe mit nur einer Plattform wird genau der gewählte Dateipfad geschrieben. Bei mehreren Zielplattformen legt die GUI neben dieser Datei je Plattform ein Unterverzeichnis an und schreibt das jeweilige Archiv hinein.
2. Wann Sie diesen Modus verwenden
- Zum Schützen eigener JARs, die Teil einer anderen, von Ihnen kontrollierten P4JX-Anwendung sind;
- zum Laden eines P4JX-Archivs aus einem vorhandenen Starter;
- für fortgeschrittene Integrationen, bei denen Sie das gesamte Auslieferungsverzeichnis selbst verwalten.
Wenn Sie eine direkt lauffähige Anwendung, eine Spring-Boot-Anwendung oder ein Tomcat-Deployment bauen, verwenden Sie den passenden Paketierungsbefehl.
3. Grundlegende Befehle
p4j encode library.jar library.p4jx
Die Kurzform funktioniert ebenfalls:
p4j library.jar library.p4jx
encode schreibt exakt den angegebenen Ausgabedateinamen; beide Befehle erzeugen daher ein P4JX-Archiv:
p4j encode library.jar library.p4jx
p4j encode library.jar library.jar
4. ZIP-Overlay
p4j encode library.jar library.p4jx \
--zip-overlay scanner
Das Overlay enthält nur öffentliche Ressourcen, Verzeichnisse und Metadaten-Stubs, damit Werkzeuge weiterhin funktionieren, die das ZIP-Zentralverzeichnis direkt lesen. Es legt weder die echten geschützten Methoden offen noch macht es aus dem P4JX-Archiv ein gewöhnliches JAR.
5. Anforderungen an die Runtime
Der systemnahe encode erzeugt kein vlxjre. Sie müssen daher selbst eine VLX-Runtime bereitstellen, die zur Identität beim Encoding passt. Vermeiden Sie es,
- das Archiv mit einem gewöhnlichen OpenJDK oder Oracle JDK zu laden;
lib/modulesoder native Bibliotheken aus einem Paket einer anderen Version zu kopieren;- das Archiv mit einer Runtime einer anderen Zielplattform, einer anderen JDK-Linie oder eines anderen Encoding-Laufs zu kombinieren.
Für gewöhnliche Auslieferungsprojekte sind die übergeordneten Paketierungsbefehle die bessere Wahl, da sie diese Zusammenhänge automatisch wahren.
6. Lizenzierung
Zum Erzeugen eines Archivs ist eine vom Server ausgestellte Lizenz nötig, die in das Ergebnis eingebettet wird. Lizenzierte Konten und der Testmodus durchlaufen dieselbe Archivprüfung. Hinterlegen Sie in automatisierten Umgebungen niemals das Kennwort fest in einem exportierten Aufgabenskript.