Error de javafx maven
Javaprogrammer43
-
KX Mensajes publicados 19031 Estado Moderador -
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:
Aquí está mi archivo pom.xml:
Y aquí está mi archivo fxml:
Y mi clase java:
Gracias de antemano por tu respuesta,
Javaprogrammer43
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
-
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-
-
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). -
-
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 comandomvn idea:idea
que generará los archivos .iml .ipr y .iws de tu proyecto. -
-