web-dev-qa-db-de.com

symbol javafx.application in IntelliJ Idea kann nicht aufgelöst werden IDE

Ich habe versucht, eine JavaFX - Anwendung in IntelliJ Idea IDE zu erstellen, aber ich habe einen Kompilierungsfehler mit dem folgenden Inhalt erhalten:

Java: Paket javafx.application ist nicht vorhanden. 

Ich habe das Project SDK und die Project Language Level in Java 8 geändert, das Projekt neu geladen, aber es hat nicht geholfen. Dann habe ich überprüft, ob JavaFX Plugin in den Einstellungen aktiviert ist.

Die Suche bei Google und StackOverflow gab mir keine weiteren Informationen darüber, was falsch ist. Vielen Dank für jede Hilfe im Voraus.

P.S. Ich verwende IntelliJ Idea 14.0 mit Java8.1.0_25 unter archlinux OS.

39
rob111

Wie angegeben here , ist JavaFX nicht mehr in openjdk enthalten.

Überprüfen Sie also, ob Sie <Java SDK root>/jre/lib/ext/jfxrt.jar in Ihrem Klassenpfad unter Project Structure -> SDKs -> 1.x -> Classpath haben. Wenn nicht, könnte das der Grund sein. Versuchen Sie es hinzuzufügen und sehen Sie, ob das Problem dadurch behoben wird, z. Installieren Sie dann unter Ubuntu das openjfx-Paket mit Sudo apt-get install openjfx.

68
Ryan J

Dies sollte Ihre perfekte Lösung sein. Versuchen Sie es und genießen Sie ... Wenn ein Befehl nicht ordnungsgemäß funktioniert, bedeutet dies, wenn Sie einen Fehler erhalten. Versuchen Sie es selbst zu lösen. Ich habe dir die Hauptsache gegeben, die du brauchst. Wenn sich Ihre Anwendung an einem anderen Ort befindet, oder Ihre Systemarchitektur anders ist. Löse es selbst. Sehr einfach das zu tun. Folgen Sie einfach meiner gegebenen Lösung.

Schritt 0:

Sudo apt-get install openjdk-8-jre

Schritt 1

Sudo apt-get install openjfx

Schritt 2:

Sudo cp /usr/share/Java/openjfx/jre/lib/ext/* /usr/lib/jvm/Java-1.8.0-openjdk-AMD64/lib

Schritt 3:

Sudo cp /usr/share/Java/openjfx/lib/* /usr/lib/jvm/Java-1.8.0-openjdk-AMD64/lib

Schritt 4:

Sudo chmod 777 -R /usr/lib/jvm/Java-1.8.0-openjdk-AMD64

Öffnen Sie jetzt ein neues Projekt oder bauen Sie Ihr Projekt neu auf ... Viel Glück.

20
Himel Rana

Sie müssen das Java-openjfx-Paket von den offiziellen Arch Linux-Repos herunterladen. (Stellen Sie außerdem sicher, dass Sie über das Paket openjdk8-openjdk verfügen.) Öffnen Sie anschließend Ihr Projekt in Intellij und gehen Sie zu Projektstruktur -> SDKs -> 1.8 -> Classpath. Versuchen Sie, das alte JDK zu entfernen, das Sie zuvor hatten, und klicken Sie auf das Verzeichnis für das neue JDK, das jetzt jfxrt.jar enthält.

12
patterkyle

Sie können den mit IntelliJ gelieferten verwenden: <intellij>/jre64/lib/ext/jfxrt.jar.

11
Rok Strniša

Sie haben möglicherweise eine niedrigere Projektsprachebene als Ihr JDK.

Prüfen Sie, ob: "Projektstruktur/Projekt/Projekt-> Sprachniveau" niedriger ist als Ihr JDK . Ich hatte das gleiche Problem mit JDK 9 und das Sprachniveau war standardmäßig auf 6 eingestellt.

Ich habe die Projektsprache auf 9 gesetzt und danach hat alles gut funktioniert.

Möglicherweise haben Sie das gleiche Problem.

2
Raphael S

Eine andere Möglichkeit, das Problem zu beheben: Klicken Sie mit der linken Maustaste auf den Projektordner in der Projektstruktur auf der linken Seite und klicken Sie in der Liste der Aktionen auf "Moduleinstellungen öffnen". In den neuen Fenstern klicken Sie auf SDKs, die sich unter dem Menütitel "Platform settngs" .__ befinden. Überprüfen Sie dann in der Liste "Classpath", ob Sie den Pfad des jfxrt-Plugins finden. Wenn nicht, klicken Sie auf das Symbol + und wählen Sie das Repertorium des jfxrt-Plugins (C:\Programme\Java\jdk1.8.0\jre\lib\ext\jfxrt.jar auf meinem Desktop)

1
user10899964

Beispielanwendung Java:

Ich kreuze meine Antwort von einer anderen Frage an hier, da es verwandt ist und auch das Problem in der Frage zu lösen scheint.

Hier ist mein Beispielprojekt mit OpenJDK 12, JavaFX 12 und Gradle 5.4

  • Öffnet ein JavaFX-Fenster mit dem Titel "Hallo Welt!"
  • Kann eine funktionierende ausführbare Distributions-Zip-Datei erstellen (zu testendes Windows)
  • Kann in IntelliJ ohne zusätzliche Konfiguration geöffnet und ausgeführt werden
  • Kann über die Befehlszeile ausgeführt werden

Ich hoffe, jemand findet das Github-Projekt nützlich.

Anleitung für den Fall Scala :

Im Folgenden finden Sie Anweisungen, die mit dem Gradle Scala -Plugin funktionieren, aber nicht mit Java zu funktionieren scheinen. Ich lasse dies hier, falls jemand anderes auch Scala, Gradle und JavaFX verwendet.

1) Wie in der Frage erwähnt, muss das JavaFX Gradle-Plugin eingerichtet werden. Open JavaFX hat detaillierte Dokumentation daz

2) Zusätzlich benötigen Sie das das JavaFX SDK für Ihre Plattform irgendwo entpackt. HINWEIS: Scrollen Sie unbedingt zum Abschnitt Neueste Versionen , in dem JavaFX 12 vorkommt (LTS 11 steht aus irgendeinem Grund an erster Stelle.)

3) Gehen Sie dann in IntelliJ zu File -> Project Structure -> Libraries, drücken Sie die ➕-Taste und fügen Sie den Ordner lib aus dem entpackten JavaFX SDK hinzu.

Weitere Anweisungen mit Screenshots finden Sie in der Dokumentation unter JavaFX-Dokumente für IntelliJ öffnen Ich kann keinen Deep-Link zum Laufen bringen. Wählen Sie also JavaFX and IntelliJ und dann Modular from IDE aus der Navigation . Scrollen Sie dann nach unten zu Schritt 3. Create a library. Prüfen Sie auch die anderen Schritte, wenn Sie Probleme haben.

Es ist schwer zu sagen, ob dies genau die gleiche Situation ist wie in der ursprünglichen Frage, aber es sah so ähnlich aus, dass ich hier gelandet bin, also füge ich meine Erfahrung hier hinzu, um anderen zu helfen.

0
Peter Lamberg