Tengo un proyecto MAVEN Multi-Module en IntelliJ que produce 3 tarros, 2 de los cuales son ejecutables y el otro es para los recursos de common.

Uno de los módulos ejecutables tiene una clase principal que le pregunta si el usuario desea iniciar el programa con CLI o GUI.

Ejecutar este principal de Intellij funciona sin problemas, en su lugar, cuando utilizo Maven para hacer el frasco (usando Maven Shade):

mvn package -pl myModule -am

Y luego lanzar el frasco con la opción GUI, aparece esta advertencia:

com.sun.javafx.application.PlatformImpl startup
WARNING: Unsupported JavaFX configuration: classes were loaded from 'unnamed module @...'

La GUI comienza sin problemas.

¿Cómo puedo deshacerme de esta advertencia? El JDK de mi proyecto es OpenJDK 16 (ya he agregado module-info.java para trabajar con javafx), OpenJFX 16, Maven Shade Plugin 3.2.4, Plugin compilador de Maven 3.8.1.

Si es necesario agregar más información, los agregaré.

0
cathartyc 29 may. 2021 a las 16:09

1 respuesta

La mejor respuesta

Parece que Maven está sombreando los frascos de Javafx en un solo frasco gordo.

El sombreado módulos múltiples en el mismo frasco no es posible, porque un frasco solo puede contener 1 módulo. Por lo tanto, supongo que el plugin de Shade resuelve ese problema al eliminar los archivos de módulo-información de las dependencias que está utilizando, lo que significa que el código JAVAFX no se cargará como un módulo, y obtendrá una advertencia de esta manera.

Creo que la única forma de deshacerse de la advertencia es no usar sombreado, sino mantener los módulos Javafx como archivos de jar separados, que luego coloque la ruta del módulo al ejecutar la aplicación.

1
Naman 29 may. 2021 a las 14:21