¿Cuál es la mejor manera de implementar aplicaciones JavaFX, crear JAR y aplicaciones autónomas e instaladores nativos?

Estoy usando IntelliJ IDEA, y tengo mi aplicación JavaFX lista para la implementación. El problema es que cuando genero el archivo JAR, no se ejecuta, cuando lo ejecuto en la línea de comando, recibo una Excepción, FXMLLoadException, aunque el proyecto está funcionando perfectamente en mi IDE.

Las tareas de Ant terminan con errores, después de 15 minutos de construcción, realmente no entiendo cuál es el problema exactamente.

Entonces mi pregunta cuáles son los pasos correctos para desplegar una aplicación JavaFX de la manera correcta, cualquier tutorial o guía será bienvenido.

Una aplicación Java se puede empaquetar de varias formas. Por favor revise Java Packaging Overview para encontrar todo al respecto. Uno de los paquetes es una self-contained Java application .

Hay diferentes formas de crear estos paquetes:

  • Usa las herramientas javapackager que vienen con tu JDK
  • Tareas de JavaFX Ant
  • JavaFX Maven Plugin para un proyecto maven

La aplicación autónoma es una de las maneras en que su aplicación puede ser empaquetada y es específica de la plataforma. El paquete contiene:

  • El paquete de la aplicación
  • Una copia privada de JRE

Una lista de paquetes disponibles se puede encontrar aquí .

Veamos las diferentes herramientas disponibles y cómo usarlas:

Herramienta JavaPackager

La herramienta JavaPackager es la herramienta más básica y le ayuda a comstackr, empaquetar, firmar y desplegar sus aplicaciones Java (FX), sin escribir ningún script adicional. El archivo javapackager.jar está ubicado en el directorio bin de la instalación de JDK.

La lista de comandos que se pueden usar con ella está disponible aquí .

Tareas de JavaFX Ant

JavaFX Ant Tasks le ayuda a empaquetar su aplicación simplemente creando un archivo build.xml para su proyecto.

Aquí puede encontrar un conjunto de ejemplos sobre cómo usar los scripts de ant para su proyecto.

La lista de comandos que se pueden usar con ella está disponible aquí .

Complemento JavaFX Maven

El complemento JavaFX Maven aprovecha el uso de la aplicación Java de empaquetado en la plataforma Maven . Puede empaquetar su aplicación java basada en maven agregando un complemento al proyecto.

Este plugin en mi humilde opinión, si es el easiest de usar de los tres. Es una herramienta muy bien escrita, fácil de entender y tiene una extensa documentación.

Complemento JavaFX Gradle

JavaFX Gradle Plugin también es del autor del plugin maven. Tiene todas las características que tiene el plugin maven, pero para Gradle 🙂

Otras lecturas :

  • Embalaje nativo para JavaFX
  • Actualización de herramientas de empaquetado de JavaFX

Oracle tiene una extensa guía sobre el empaquetado en su sitio web para JavaFX 2 y JavaFX 8 .

Si necesita ayuda para su problema específico, publique el código y la stack de errores que obtiene.

Si usa Maven, otro enfoque muy inteligente es usar maven-shade-plugin ( link ). Construye un gran contenedor con todas las dependencias dentro del cual se puede ejecutar directamente sin más cosas que hacer. Puede usar esto en combinación con javafx-maven-plugin . También probé diferentes enfoques y jugué por mucho tiempo y esta solución fue la única que realmente funciona. Además, fue fácil de configurar.

Esto es lo que debe agregar a su pom.xml:

    org.apache.maven.plugins maven-shade-plugin 3.1.1     package  shade     your.package.name.Main        com.zenjava javafx-maven-plugin 8.8.3  your.package.name.Main     

Cambia el nombre de tu paquete dentro de mainClass por shade y también el plugin javaFx y listo. Ahora puede construir su Aplicación como siempre con el mvn package .