Protección de aplicaciones JavaFX
JavaFX está disponible tanto para aplicaciones Java normales como para aplicaciones de escritorio Spring Boot. El runtime reducido de P4JX no incluye JavaFX por defecto, por lo que debe activarse de forma explícita durante el empaquetado o mediante recomendaciones de compatibilidad.
1. Operaciones de GUI
-
Para aplicaciones JavaFX normales, seleccione Java Application en la página de tipo de aplicación; para aplicaciones de escritorio JavaFX que utilizan un contenedor Spring, seleccione Spring Boot. Library Encryption solo genera un archivo de protección y no puede reemplazar el empaquetado de una aplicación JavaFX.

-
Seleccione el JAR de entrada, Versión de Java incluida en el paquete y la plataforma de destino, y luego elija entre el modo simple o el modo avanzado. Los recursos de JavaFX se obtienen por separado para cada versión de Java y plataforma de destino; las tareas multiplataforma generarán paquetes de salida independientes entre sí.

-
En el modo simple, si el análisis de compatibilidad detecta referencias a
javafx.*o dependencias de JavaFX, indicará en los resultados los motivos de los ajustes y activará automáticamente JavaFX; si se detectajavafx.scene.web, también se incluirá WebView. El análisis es un análisis heurístico estático, por lo que aún se debe revisar el resumen de JavaFX al acceder a la página de resultados. -
En el modo avanzado, marque Bundle JavaFX into the packaged runtime en la pestaña JavaFX runtime y luego seleccione la estrategia para WebView:
- Auto: Se determina automáticamente según si la aplicación hace referencia a
javafx.scene.web. - Include: Incluir obligatoriamente WebView (
fx-webkit); - Exclude: Excluir obligatoriamente WebView.
El punto de entrada para las aplicaciones Java comunes es el siguiente:

Las aplicaciones de escritorio de Spring Boot utilizan la pestaña del mismo nombre:

- Auto: Se determina automáticamente según si la aplicación hace referencia a
-
Después de seleccionar la carpeta de salida, confirme que JavaFX aparezca como ya integrado en el resumen de parámetros y que el estado de WebView sea el esperado; a continuación, haga clic en Run protection. Una vez generado, utilice los scripts de inicio incluidos en el paquete para verificar las ventanas, recursos FXML, CSS/imágenes y WebView en cada plataforma objetivo.
Los materiales de WebView ocupan aproximadamente 40 MB; si no se utilizan, puede elegir Exclude para reducir el tamaño del paquete. Para conocer el significado de los demás ajustes en la interfaz avanzada, consulte Configuración del modo avanzado de Protector4J y Configuración de Spring Boot.
2. Obtención en línea mediante CLI
p4j javaapp fx-app.jar dist --javafx
Spring Boot JavaFX:
p4j springboot fx-boot.jar dist --javafx
Incluir o excluir obligatoriamente WebView:
--javafx-webview
--no-javafx-webview
La herramienta obtiene los materiales correspondientes desde los sitios de descarga públicos de la región actual, en función de la línea de entrenamiento y la plataforma Java objetivo. Ni la descarga de JavaFX ni la de VLX JRE requieren que se proporcione la clave de almacenamiento en la nube al cliente.
3. Materiales sin conexión
La CLI admite directorios locales:
p4j javaapp fx-app.jar dist --javafx /opt/p4jx-fx
El directorio puede contener:
fx-core.tar.gzjunto confx-webkit.tar.gz, que es opcional; o- Un árbol de archivos de JavaFX desplegado, con
lib/como raíz.
La GUI no ofrece la opción de seleccionar un directorio local de JavaFX; para escenarios sin conexión, utilice la CLI.
4. FXML
Si la aplicación utiliza FXMLLoader, el análisis de compatibilidad recomendará activar el overlay ZIP del escáner:
p4j javaapp fx-app.jar dist --javafx --zip-overlay scanner
Los recursos relacionados con FXML, la firma de los controladores y el escaneo del framework requieren pruebas de inicio reales en la plataforma objetivo.
5. Java 8 y Java 11+
- Java 8 utiliza
jfxrt.jary un modelo de directorio de extensiones; por lo general, no se necesitan parámetros de módulo al generar scripts. - Java 11+ emplea JAR de JavaFX modular; al generar scripts, se establecen automáticamente un path de módulo específico y
--add-modules.
Siempre se deben utilizar run.sh, run.command o run.bat generados, y no se debe usar todo vlxjre/lib como path de módulo por cuenta propia.
6. Detección automática de límites
El detector escanea sus propias referencias a clases y determina si se trata de JavaFX según el nombre del archivo JAR de dependencia. No escanea en profundidad el bytecode de todas las dependencias de terceros para evitar clasificar erróneamente integraciones opcionales de JavaFX como uso real.
Si JavaFX se incluye de forma oculta en una dependencia cuyo nombre no indica que contiene JavaFX, el escaneo automático podría pasar por alto casos; en tales situaciones, se debe utilizar explícitamente --javafx.
7. Recomendaciones sobre el alcance de protección
- Para determinar si las subclases de JavaFX
Application, los controladores FXML y los modelos de propiedades están protegidos, se deben seguir los resultados de pruebas reales en la versión específica de Java. - Las clases de enlace que permiten acceso directo mediante JNI/native deben mantenerse como clases comunes.
- Primero, utilice el modo simple o
--compat-scan, y luego realice pruebas de regresión para la apertura de ventanas, la carga de FXML, los recursos CSS/imágenes, WebView y las bibliotecas nativas de la plataforma.