it-swarm.com.de

IntelliJ kann JavaFX 11 mit OpenJDK 11 nicht erkennen

Ich habe Probleme damit, dass IntellJ JavaFX-Pakete erkennt. Bei einem neuen JavaFX-Projekt mit OpenJDK 11 kann IntelliJ beim Erstellen des Projekts die JavaFX-Pakete nicht erkennen.

Ich habe openjfx:javafx-base-11 aus dem Maven-Repo importiert.

Ich habe mir andere Fragen angeschaut und die Lösungen scheinen von der Überprüfung zu reichen, ob der Bytecode auf der richtigen Ebene ist (meine ist) und ob die Projektsprache korrekt ist (meine ist).

Hat jemand irgendwelche Ideen?

pic 1

pic 2

pic 3

Bearbeiten:

Error:

enter image description here

46

Wie in den Kommentaren erwähnt, ist Starting Guide der Ort, an dem mit Java 11 und JavaFX 11 begonnen wird.

Der Schlüssel zum Arbeiten wie vor Java 11 besteht darin, Folgendes zu verstehen:

  • JavaFX 11 ist nicht mehr im JDK enthalten
  • Sie können es in verschiedenen Geschmacksrichtungen erhalten, entweder als SDK oder als reguläre Abhängigkeiten (maven/gradle).
  • Sie müssen es in den Modulpfad Ihres Projekts aufnehmen, auch wenn Ihr Projekt nicht modular aufgebaut ist.

JavaFX-Projekt

Wenn Sie ein reguläres JavaFX-Standardprojekt in IntelliJ (ohne Maven oder Gradle) erstellen, empfehle ich Ihnen, das SDK von hier herunterzuladen. Beachten Sie, dass es auch jmods gibt, aber für ein nicht modulares Projekt wird das SDK bevorzugt.

Dies sind die einfachen Schritte, um das Standardprojekt auszuführen:

  1. Erstellen Sie ein JavaFX-Projekt
  2. Setze JDK 11 (zeige auf deine lokale Java 11 Version)
  3. Fügen Sie das JavaFX 11-SDK als Bibliothek hinzu. Die URL könnte so etwas wie /Users/<user>/Downloads/javafx-sdk-11/lib/ sein. Sobald Sie dies tun, werden Sie feststellen, dass die JavaFX-Klassen jetzt im Editor erkannt werden.

JavaFX 11 Project

  1. Bevor Sie das Standardprojekt ausführen, müssen Sie diese nur zu den VM -Optionen hinzufügen:

    --module-path /Users/<user>/Downloads/javafx-sdk-11/lib --add-modules=javafx.controls,javafx.fxml

  2. Lauf

Maven

Wenn Sie Ihr Projekt mit Maven erstellen, gehen Sie folgendermaßen vor:

  1. Erstellen Sie ein Maven-Projekt mit JavaFX-Archetyp
  2. Setze JDK 11 (zeige auf deine lokale Java 11 Version)
  3. Fügen Sie die JavaFX 11-Abhängigkeiten hinzu.

    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>11</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>11</version>
        </dependency>
    </dependencies>
    

Sobald Sie dies tun, werden Sie feststellen, dass die JavaFX-Klassen jetzt im Editor erkannt werden.

JavaFX 11 Maven project

Sie werden feststellen, dass Maven die erforderlichen Abhängigkeiten für Sie verwaltet: Es fügt javafx.base und javafx.graphics für javafx.controls hinzu, aber am wichtigsten ist, dass es den erforderlichen Klassifizierer basierend hinzufügt auf Ihrer Plattform. In meinem Fall Mac.

Aus diesem Grund sind Ihre jars org.openjfx:javafx-controls:11 leer , da es drei mögliche Klassifizierer (Windows-, Linux- und Mac-Plattformen) gibt, die alle Klassen und die native Implementierung enthalten.

Wenn Sie dennoch zu Ihrem .m2-Repo wechseln und die Abhängigkeiten von dort manuell übernehmen möchten, stellen Sie sicher, dass Sie die richtige auswählen (zum Beispiel .m2/repository/org/openjfx/javafx-controls/11/javafx-controls-11-mac.jar).

  1. Ersetzen Sie die Standard-Maven-Plugins durch die von hier .

  2. Führen Sie mvn compile exec:Java aus, und es sollte funktionieren.

Ähnliches gilt auch für Gradle-Projekte, wie im Detail erläutert hier .

EDIT

Das erwähnte Handbuch Erste Schritte enthält aktualisierte Dokumentation und Beispielprojekte für IntelliJ:

87
José Pereda

Keines der oben genannten hat bei mir funktioniert. Ich habe zu viel Zeit damit verbracht, andere aufgetretene Fehler zu beseitigen. Ich fand das der einfachste und beste Weg.

Dies funktioniert auch, um JavaFx auf Jdk 11, 12 und OpenJdk12 zu bekommen!

  • Das Video zeigt Ihnen den JavaFx Sdk-Download
  • So legen Sie es als globale Bibliothek fest
  • Setze das module-info.Java (ich bevorzuge das unterste)

module thisIsTheNameOfYourProject {
    requires javafx.fxml;
    requires javafx.controls;
    requires javafx.graphics;
    opens sample;
}

Das Ganze hat nur 5 Minuten gedauert !!!

4
Yo Apps

Das Problem, dass Java FX nicht mehr Teil von JDK 11 ist. Die folgende Lösung funktioniert mit IntelliJ (habe es nicht mit NetBeans versucht):

  1. Fügen Sie JavaFX Global Library als Abhängigkeit hinzu:

    Einstellungen -> Projektstruktur -> Modul. Gehen Sie im Modul zur Registerkarte Abhängigkeiten und klicken Sie auf das Pluszeichen ("+") -> Bibliothek -> Java -> wählen Sie JavaFX aus der Liste aus und klicken Sie auf Auswahl hinzufügen und dann auf Einstellungen anwenden.

  2. Klicken Sie mit der rechten Maustaste auf die Quelldatei (src) in Ihrem JavaFX-Projekt und erstellen Sie eine neue module-info.Java-Datei . Schreiben Sie in die Datei den folgenden Code:

           module YourProjectName    
           { requires javafx.fxml;
             requires javafx.controls;
             requires javafx.graphics;
              opens sample;}
    

Diese 2 Schritte werden all Ihre Probleme mit JavaFX lösen, das versichere ich Ihnen.

Hinweis: Es gibt ein You Tube-Tutorial, das von The Learn Programming Channel erstellt wurde und alle Details in nur 5 Minuten erklärt. Ich empfehle es auch anzusehen, um dein Problem zu lösen: https://www.youtube.com/watch?v=WtOgoomDewo

4
Coder992