wake-up-neo.com

Netbeans 9.0 mit JavaFx 11 und JDK 11

Ich versuche, JavaFX 11 auf NetBeans 9 auszuführen. Da JDK 11 kein JavaFX mehr hat, konnte ich NetBeans nicht dazu bringen, ein JavaFX-Projekt auszuführen. Es heißt: "Failed to automatically set-up a JavaFX Platform."

Ich habe dann javafx11 von dieser Website heruntergeladen https://gluonhq.com/products/javafx/ , Nach dem Tutorial konnte ich eine JavaFX-Klasse normalerweise über das Terminal . Kompilieren und ausführen JavaFX kann nur mithilfe von Maven hinzugefügt werden. Die Anwendung kann jedoch nicht ausgeführt werden, auch wenn sie erfolgreich erstellt wurde.

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

Gibt es eine andere Möglichkeit, JavaFX 11 mit NetBeans auszuführen? oder vielleicht Eclipse?

1
kalix

Vielleicht eine späte Antwort, aber es ist möglich, javafx 11 maven project + NetBeans 9 zu verwenden.

  1. Maven mag es nicht, die Anwendung in einer Hauptklasse zu erweitern. Sie sollten zwei Klassen verwenden:

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. Ihre pom.xml sollte so aussehen:

        <?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>
    

Dies funktioniert in Netbeans ohne Probleme. Grundsätzlich müssen Sie ein neues Maven-Projekt starten und nach dem Festlegen des Projekts einfach pom.xml ersetzen.

Auf diese Weise wird Ihr Code von der IDE ausgeführt und korrekt kompiliert, sodass Sie ihn von der Befehlszeile aus mit Java --jar ausführen können. Außerdem können Sie den Debugger NB ausführen.

1
Igor Smitran