Error de javafx maven

Javaprogrammer43 -  
KX Mensajes publicados 19031 Estado Moderador -
Hola,
he creado un proyecto maven con mi IDE (IntelliJ IDEA),
y cuando ejecuto el proyecto tengo este error:
Error: Los componentes de ejecución de JavaFX faltan y son necesarios para ejecutar esta aplicación


Aquí está mi archivo pom.xml:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.JonathanSoftware</groupId> <artifactId>presentation</artifactId> <version>1.0-SNAPSHOT</version> <name>presentation</name> <!-- FIXME cámbialo al sitio web del proyecto --> <url>https://github.com/Jonathan-Software</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-controls</artifactId> <version>15.0.1</version> </dependency> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-fxml</artifactId> <version>16-ea+6</version> </dependency> </dependencies> <build> <pluginManagement><!-- fijar versiones de plugins para evitar usar valores predeterminados de Maven (puede moverse al pom padre) --> <plugins> <!-- ciclo de vida de limpieza, ver https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle --> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.1.0</version> </plugin> <!-- ciclo de vida predeterminado, empaquetado jar: ver https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging --> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> </plugin> <plugin> <artifactId>maven-jar-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-install-plugin</artifactId> <version>2.5.2</version> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> </plugin> <!-- ciclo de vida del sitio, ver https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle --> <plugin> <artifactId>maven-site-plugin</artifactId> <version>3.7.1</version> </plugin> <plugin> <artifactId>maven-project-info-reports-plugin</artifactId> <version>3.0.0</version> </plugin> <plugin> <groupId>org.openjfx</groupId> <artifactId>javafx-maven-plugin</artifactId> <version>0.0.5</version> <configuration> <mainClass>HelloFX</mainClass> </configuration> </plugin> </plugins> </pluginManagement> </build> </project>


Y aquí está mi archivo fxml:
<?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.control.Button?> <?import javafx.scene.control.Menu?> <?import javafx.scene.control.MenuBar?> <?import javafx.scene.control.MenuItem?> <?import javafx.scene.control.Separator?> <?import javafx.scene.control.SeparatorMenuItem?> <?import javafx.scene.control.ToolBar?> <?import javafx.scene.image.Image?> <?import javafx.scene.image.ImageView?> <?import javafx.scene.layout.AnchorPane?> <AnchorPane prefHeight="400.0" prefWidth="668.0" xmlns="http://javafx.com/javafx/15.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="org.JonathanSoftware.presentation.controller.MainController"> <children> <ImageView fitHeight="342.0" fitWidth="448.0" layoutX="194.0" layoutY="88.0" pickOnBounds="true" preserveRatio="true"> <image> <Image url="@../ressources/logo_cloudpostman.png" /> </image></ImageView> <MenuBar layoutY="2.0" prefHeight="25.0" prefWidth="852.0"> <menus> <Menu mnemonicParsing="false" text="Archivo"> <items> <MenuItem mnemonicParsing="false" text="Acerca de Cloud Postman" /> <SeparatorMenuItem mnemonicParsing="false" /> <MenuItem mnemonicParsing="false" text="Configuraciones" /> <MenuItem mnemonicParsing="false" text="Abrir caja de mensajes" /> <MenuItem mnemonicParsing="false" text="Escribir nuevo mensaje" /> <MenuItem mnemonicParsing="false" onAction="#exit" text="Salir" /> </items> </Menu> <Menu mnemonicParsing="false" text="Editar"> <items> <MenuItem mnemonicParsing="false" text="Copiar" /> <MenuItem mnemonicParsing="false" text="Pegar" /> <MenuItem mnemonicParsing="false" text="Eliminar" /> <MenuItem mnemonicParsing="false" text="Actualizar" /> </items> </Menu> <Menu mnemonicParsing="false" text="Ayuda"> <items> <MenuItem mnemonicParsing="false" text="Wiki Cloud Postman" /> <MenuItem mnemonicParsing="false" text="Buscar actualizaciones" /> </items> </Menu> </menus> </MenuBar> <ToolBar layoutY="445.0" prefHeight="51.0" prefWidth="852.0"> <items> <Button mnemonicParsing="false" prefHeight="6.0" prefWidth="50.0"> <graphic> <ImageView fitHeight="30.0" fitWidth="37.0" pickOnBounds="true" preserveRatio="true"> <image> <Image url="@../ressources/new_message_icon.png" /> </image> </ImageView> </graphic> </Button> <Button mnemonicParsing="false" prefHeight="38.0" prefWidth="39.0"> <graphic> <ImageView fitHeight="30.0" fitWidth="42.0" pickOnBounds="true" preserveRatio="true"> <image> <Image url="@../ressources/message_box_icon.png" /> </image> </ImageView> </graphic> </Button> <Separator orientation="VERTICAL" prefHeight="0.0" prefWidth="9.0" /> <Button mnemonicParsing="false" prefHeight="38.0" prefWidth="47.0"> <graphic> <ImageView fitHeight="78.0" fitWidth="25.0" pickOnBounds="true" preserveRatio="true"> <image> <Image url="@../ressources/Help_icon.png" /> </image> </ImageView> </graphic> </Button> <Button mnemonicParsing="false" prefHeight="38.0" prefWidth="54.0"> <graphic> <ImageView fitHeight="30.0" fitWidth="43.0" pickOnBounds="true" preserveRatio="true"> <image> <Image url="@../ressources/settings_icon.png" /> </image> </ImageView> </graphic> </Button> </items> </ToolBar> </children> </AnchorPane> 


Y mi clase java:
package org.JonathanSoftware.presentation; import javafx.application.Application; import javafx.stage.Stage; public class ViewController extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { primaryStage.show(); } } 

Gracias de antemano por tu respuesta,
Javaprogrammer43

1 respuesta

  1. KX Mensajes publicados 19031 Estado Moderador 3 020
     
    Hola,

    No vas a poder hacer JavaFX 15 codificando en Java 7. En la documentación de JavaFX 15 se especifica usar Java 11 (la última versión LTS) o Java 15 (la última versión no LTS).

    En la sección de Maven de la documentación encontrarás un ejemplo de arquetipo para generar un proyecto Java FX con Maven (acabo de probarlo con un JDK 11 configurado en JAVA_HOME)
    mvn archetype:generate -DarchetypeGroupId=org.openjfx -DarchetypeArtifactId=javafx-archetype-simple -DarchetypeVersion=0.0.3 -DgroupId=org.openjfx -DartifactId=sample -Dversion=1.0.0 -Djavafx-version=15.0.1 cd sample mvn clean javafx:run

    --
    La confianza no excluye el control
    0
    1. Javaprogrammer43
       
      Tengo el jdk 15 configurado en mi variable JAVA_HOME.
      0
    2. KX Mensajes publicados 19031 Estado Moderador 3 020 > Javaprogrammer43
       
      Si tienes un JDK 15 instalado, no sirve de nada configurar tu proyecto en Java 7. Modifica el pom.xml para compilar en Java 15.
      <maven.compiler.source>1.15</maven.compiler.source> <maven.compiler.target>1.15</maven.compiler.target>

      Sin embargo, te aconsejo que vuelvas a configurar desde cero utilizando el archetype como te indiqu é para verificar que tu configuración funciona bien - incluyendo en IntelliJ - antes de comenzar a modificar tu proyecto.
      Porque con el poco código que nos muestras, ya hay varias cosas incorrectas, por ejemplo, la incoherencia entre tu clase principal ViewController y la configuración
      <mainClass>HelloFX</mainClass>

      Parece un copiar y pegar, tomado de diferentes códigos de internet, que no tienen nada que ver entre sí y que podrían no estar ni siquiera relacionados con las mismas versiones de JavaFX (que apenas comenzaba en la época de Java 7 y ha cambiado mucho desde entonces).
      0
    3. Developeur87 > KX Mensajes publicados 19031 Estado Moderador
       
      He generado mi archivo fxml con Scene Builder, pero aún no he configurado todo en mi pom.xml.
      0
    4. KX Mensajes publicados 19031 Estado Moderador 3 020 > Developeur87
       
      Si te aconsejo que primero configures el pom.xml a partir de un ejemplo simple es para asegurarme de que todo funcione antes de crear un programa más elaborado, porque de lo contrario no sabremos de dónde viene el error (código, configuración, IDE?)
      Una vez que la configuración del proyecto sea estable, estarás seguro de que el más mínimo error estará únicamente relacionado con tu código.

      En los arquetipos también hay uno que utiliza fxml, tal vez ese deberías probar:
      mvn archetype:generate -DarchetypeGroupId=org.openjfx -DarchetypeArtifactId=javafx-archetype-fxml

      Verás que el pom.xml generado es mucho más simple que el que tenías tú.

      Nota: Para construir un proyecto en IntelliJ a partir de un pom.xml, puedes usar el comando
      mvn idea:idea
      que generará los archivos .iml .ipr y .iws de tu proyecto.
      0
    5. Javaprogrammer43 > KX Mensajes publicados 19031 Estado Moderador
       
      He generado un proyecto con este arquetipo, y ya no hay más problemas. Sin embargo, todavía no sé de dónde venía mi error.
      0