web-dev-qa-db-fra.com

Netbeans 9.0 avec JavaFx 11 et JDK 11

J'essaie d'exécuter JavaFX 11 sur NetBeans 9. Le JDK 11 ne disposant plus de JavaFX, je ne pouvais pas obliger NetBeans à exécuter un projet JavaFX, il est écrit: "Failed to automatically set-up a JavaFX Platform."

J'ai ensuite téléchargé le fichier javafx11 à partir de ce site Web https://gluonhq.com/products/javafx/ , Après avoir suivi le tutoriel, j'ai pu compiler et exécuter une classe JavaFX normalement via le terminal . La seule façon pour moi d’ajouter JavaFX est d’utiliser Maven, mais je ne peux pas exécuter l’application même si elle a été construite avec succès.

    Error: JavaFX runtime components are missing, and are required to run this application
 Command execution failed.

Existe-t-il un autre moyen d’exécuter JavaFX 11 avec NetBeans? ou peut-être Eclipse?

1
kalix

Peut-être une réponse tardive, mais il est possible d’avoir javafx 11 maven project + NetBeans 9.

  1. Maven n'aime pas étendre l'application dans une classe principale. Vous devriez utiliser deux classes:

Main.Java:

public class Main {

    public static void main(String[] args) {
        MainApp.main(args);
    }
}

MainApp.Java:

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class MainApp extends Application {
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Hello World!");
        String a;
        a = new String("test");
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                System.out.println("Hello World!");
            }
        });

        StackPane root = new StackPane();
        root.getChildren().add(btn);
        primaryStage.setScene(new Scene(root, 300, 250));
        primaryStage.show();
    }
}
  1. Votre pom.xml devrait ressembler à ceci:

        <?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>YOUR GROUP ID</groupId>
            <artifactId>YOUR ARTIFACT ID</artifactId>
            <version>YOUR VERSION</version>
    
            <dependencies>
                <dependency>
                    <groupId>org.openjfx</groupId>
                    <artifactId>javafx-controls</artifactId>
                    <version>11</version>
                </dependency>
                <dependency>
                    <groupId>org.openjfx</groupId>
                    <artifactId>javafx-media</artifactId>
                    <version>11</version>
                </dependency>
                <dependency>
                    <groupId>org.openjfx</groupId>
                    <artifactId>javafx-graphics</artifactId>
                    <version>11</version>
                </dependency>
                <dependency>
                    <groupId>org.openjfx</groupId>
                    <artifactId>javafx-fxml</artifactId>
                    <version>11</version>
                </dependency>
            </dependencies>
    
            <build>
    
                <plugins>
                    <plugin>
                        <groupId>org.Apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <version>3.8.0</version>
                        <configuration>
                            <source>11</source>
                            <target>11</target>
    
                            <fork>true</fork>
                            <executable>PATH TO javac binary i.e. /usr/local/Java/jdk-11.0.1/bin/javac</executable>
    
    
                            <compilerArgs>
                                <arg>-verbose</arg>
                                <arg>-Xlint:unchecked</arg>
                            </compilerArgs>
    
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.Apache.maven.plugins</groupId>
                        <artifactId>maven-jar-plugin</artifactId>
                        <configuration>
                            <archive>
                                <manifest>
                                    <mainClass>Main</mainClass>
                                </manifest>
                            </archive>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>exec-maven-plugin</artifactId>
                        <version>1.2.1</version>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>Java</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <mainClass>Main</mainClass>
                        </configuration>
                    </plugin>
                    <plugin>
                        <artifactId>maven-Assembly-plugin</artifactId>
                        <version>3.1.0</version>
                        <configuration>
                            <archive>
                                <manifest>
                                    <mainClass>Main</mainClass>
                                </manifest>
                            </archive>
                            <descriptorRefs>
                                <descriptorRef>jar-with-dependencies</descriptorRef>
                            </descriptorRefs>
                        </configuration>
                        <executions>
                            <execution>
                                <id>make-Assembly</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
            <name>YOUR ARTIFACT ID</name>
        </project>
    

Cela fonctionnera dans les Netbeans sans aucun problème . Fondamentalement, ce que vous devez faire est de démarrer un nouveau projet maven et une fois que vous avez fini de définir le projet, remplacez simplement pom.xml.

De cette façon, votre code sera exécuté à partir de l'EDI et sera compilé correctement afin que vous puissiez l'exécuter en ligne de commande avec Java --jar. En outre, vous pourrez exécuter le débogueur NB.

1
Igor Smitran