Schutz für JavaFX-Anwendungen
Sowohl gewöhnliche Java-Anwendungen als auch Spring Boot-Desktop-Anwendungen können JavaFX aktiviert werden. Die vereinfachte Laufzeit von P4JX enthält standardmäßig kein JavaFX und muss beim Paketieren explizit oder aufgrund von Kompatibilitätsempfehlungen aktiviert werden.
1. GUI-Bedienung
-
Für gewöhnliche JavaFX-Anwendungen wählen Sie auf der Anwendungsart-Seite Java Application aus; für JavaFX-Desktop-Anwendungen, die einen Spring-Container verwenden, wählen Sie Spring Boot aus. Library Encryption erzeugt lediglich ein geschütztes Archiv und kann die Paketierung einer JavaFX-Anwendung nicht ersetzen.

-
Wählen Sie die Eingabesource JAR, Die mitgelieferte Java-Version sowie die Zielplattform aus und entscheiden Sie sich anschließend für den Einfachmodus oder den Fortgeschrittenen Modus. Die JavaFX-Ressourcen werden für jede Ziel-Java-Version und -Plattform separat heruntergeladen; mehrplattformige Aufgaben erzeugen unabhängige Ausgabepakete.

-
Im Einfachmodus zeigt die Kompatibilitätsüberprüfung bei Entdeckung von Verweisen auf
javafx.*oder JavaFX-Abhängigkeiten im Scan-Ergebnis den Grund für die Anpassung an und aktiviert JavaFX automatisch; bei Entdeckung vonjavafx.scene.webwird außerdem eine WebView hinzugefügt. Die Überprüfung erfolgt durch statische heuristische Analyse – auf der Ausgabeseite sollte dennoch der JavaFX-Zusammenfassung nochmals überprüft werden. -
Im Fortgeschrittenen Modus wählen Sie im Tab JavaFX runtime Bundle JavaFX into the packaged runtime aus und legen anschließend die WebView-Strategie fest:
- Auto: Automatische Entscheidung je nachdem, ob die Anwendung auf
javafx.scene.webverweist oder nicht; - Include: Verpflichtende Einbeziehung von WebView (
fx-webkit); - Exclude: Verpflichtende Ausklammerung von WebView.
Der Eingangspunkt für herkömmliche Java-Anwendungen ist wie folgt:

Spring Boot Desktop-Anwendungen verwenden das gleichnamige Tab:

- Auto: Automatische Entscheidung je nachdem, ob die Anwendung auf
-
Nach Auswahl des Ausgabeverzeichnisses sollte in der Parameterübersicht JavaFX als bereits integriert angezeigt werden, der Zustand von WebView entspricht den Erwartungen – danach wird auf Run protection geklickt. Nach der Erstellung werden über die im Paket enthaltenen Startskripte auf jeder Zielplattform Fenster, FXML-, CSS-/Bildressourcen sowie WebView überprüft.
Die WebView-Ressourcen wiegen etwa 40 MB; bei Nichtverwendung kann man Exclude wählen, um die Paketgröße zu verringern. Die Bedeutung weiterer Einstellungen in der fortgeschrittenen Benutzeroberfläche findet man unter Einstellungen für den Fortgeschrittenen-Modus von Protector4J und Einstellungen für Spring Boot.
2. CLI kann online heruntergeladen werden.
p4j javaapp fx-app.jar dist --javafx
Spring Boot JavaFX:
p4j springboot fx-boot.jar dist --javafx
Verpflichtende Einbeziehung oder Ausklammerung von WebView:
--javafx-webview
--no-javafx-webview
Das Tool bezieht die entsprechenden Materialien von offiziellen Download-Seiten in der aktuellen Region, abhängig von der Ziel-Java-Trainingslinie und Plattform. Weder beim Download von JavaFX noch beim Download von VLX JRE ist es notwendig, den Cloud-Speicher-Schlüssel an den Client weiterzugeben.
3. Offline-Materialien
CLI unterstützt lokale Verzeichnisse:
p4j javaapp fx-app.jar dist --javafx /opt/p4jx-fx
Das Verzeichnis kann Folgendes enthalten:
fx-core.tar.gzzusammen mit dem optionalenfx-webkit.tar.gz; oder- Ein ausgeklapptes JavaFX-Dateisystem mit
lib/als Wurzel.
Die GUI bietet keine Möglichkeit zur Auswahl eines lokalen JavaFX-Verzeichnisses; in Offline-Szenarien sollte die CLI verwendet werden.
4. FXML
Falls die Anwendung FXMLLoader verwendet, empfiehlt die Kompatibilitätsprüfung die Aktivierung des Scanners ZIP overlay:
p4j javaapp fx-app.jar dist --javafx --zip-overlay scanner
Für Ressourcen im FXML-Format, Controller-Signierungen sowie Framework-Scans sind tatsächliche Starttests auf der Zielplattform erforderlich.
5. Java 8 und Java 11+
- Java 8 verwendet das
jfxrt.jar/Erweiterungsverzeichnismodell; bei der Erstellung von Skripten sind in der Regel keine Modulparameter notwendig. - Java 11+ nutzt modulare JavaFX JAR-Dateien; bei der Erstellung von Skripten werden automatisch ein spezieller module path sowie
--add-modulesfestgelegt.
Verwenden Sie stets die erzeugten Dateien run.sh, run.command oder run.bat – verwenden Sie nicht den gesamten vlxjre/lib als module path.
6. Automatische Erkennung von Grenzen
Der Detektor scannt die eigenen Klassenzuordnungen und erkennt JavaFX anhand der Namen der abhängigen JAR-Dateien. Er scannt nicht tief in den Bytecode aller Drittanbieter-Abhängigkeiten, um eine optionale JavaFX-Integration fälschlicherweise als tatsächliche Verwendung einzustufen.
Falls JavaFX in eine Abhängigkeit mit unkenntlichem Namen eingebettet ist, können automatische Scans Fehler aufweisen; in solchen Fällen sollte --javafx explizit verwendet werden.
7. Empfehlungen zum Schutzumfang
- Ob Unterklasse von JavaFX
Application, FXML Controller sowie das Eigenschaftsmodell geschützt werden sollen, hängt von den tatsächlichen Testergebnissen der jeweiligen Java-Version ab. - Brückenklassen, die direkt über JNI/native aufgerufen werden, sollten als gewöhnliche Klassen bleiben.
- Zunächst sollte im Einfachmodus oder mit
--compat-scangearbeitet werden, anschließend sollten Regressionstests für das Öffnen von Fenstern, das Laden von FXML, CSS/Bildressourcen, WebView sowie die Plattform-native Bibliotheken durchgeführt werden.