Das Symbol javafx.application in der IntelliJ Idea IDE kann nicht aufgelöst werden


80

Ich habe versucht, eine JavaFX- Anwendung in IntelliJ Idea IDE zu erstellen, habe jedoch einen Kompilierungsfehler erhalten, der Folgendes besagt:

java: Paket javafx.application existiert nicht.

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

Die Suche bei Google und StackOverflow hat mir keine weiteren Ideen gegeben, was falsch ist. Vielen Dank für jede Hilfe im Voraus.

PS Ich verwende IntelliJ Idea 14.0 mit java8.1.0_25 unter Archlinux OS.


Kompilieren Sie gegen den JDK oder den JRE? Stellen Sie sicher, es ist das JDK.
Stav Saad

Antworten:


96

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

Überprüfen Sie also, ob Sie <Java SDK root>/jre/lib/ext/jfxrt.jarauf Ihrem Klassenpfad unter haben Project Structure -> SDKs -> 1.x -> Classpath? Wenn nicht, könnte das der Grund sein. Versuchen Sie es hinzuzufügen und prüfen Sie, ob dies Ihr Problem behebt, z. B. unter Ubuntu. Installieren Sie dann das openjfx-Paket mit sudo apt-get install openjfx.


Ich habe diese Datei nicht im Klassenpfad und im SDK-Stammordner. Ich weiß nicht, warum mein Java, das ich von AUR installiert habe, keine jfxrt.jar-Datei hat.
rob111

Mein Rat wäre, zu Oracle zu gehen und die richtige Distribution für Ihr Betriebssystem zu erhalten.
Ryan J

2
Ich habe die Datei jfxrt.jar zum entsprechenden Verzeichnis hinzugefügt und zu SDKs hinzugefügt. Jetzt erkennt meine IDE javafx, ABER ich habe Laufzeitausnahmegrafiken. Die Geräteinitialisierung ist fehlgeschlagen für: es2, sw Fehler beim Initialisieren von QuantumRenderer: Keine geeignete Pipeline gefunden. Java.lang.RuntimeException: java.lang.RuntimeException: Fehler beim Initialisieren von QuantumRenderer: Keine geeignete Pipeline gefunden muss jetzt?
rob111

Leider klingt es so, als hätten Sie ein Systemkonfigurationsproblem ... Ich bin mir nicht sicher, was Sie tun können, um das zu beheben, da ich nicht weiß, wie benutzerdefiniert Ihre spezielle Linux-Distribution ist.
Ryan J

24

Dies sollte Ihre perfekte Lösung sein. Versuchen und genießen. Wenn ein Befehl nicht ordnungsgemäß funktioniert, versuchen Sie, ihn selbst zu beheben, wenn Sie einen Fehler erhalten. Ich habe dir die Hauptsache gegeben, die du brauchst. Wenn sich Ihre Anwendung an einem anderen Speicherort befindet oder Ihre Systemarchitektur anders ist, lösen Sie sie selbst. Es ist 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 erstellen Sie Ihr Projekt neu. Viel Glück.


1
OP verwendet Arch Linux, das nicht APT hat
xdevs23

4
sudo chmod 777 -R /usr/lib/jvm/java-1.8.0-openjdk-amd64ist eine schlechte Idee! Tu es nicht!
Karl Richter

Karl Richter. Als Entwickler. Zu Entwicklungszwecken können Sie dies tun. Die Erteilung der 777-Berechtigung ist für Unternehmen und allgemeine Benutzer schlecht. Als Entwickler sollte es kein Problem machen. Sie kennen Ihr Betriebssystem gut. >> Auch wenn Sie möchten, können Sie Teig machen, indem Sie mehr über dieses Problem recherchieren. Vielen Dank.
Himel Rana

5
Das Wissen über Ihr Betriebssystem ist eine ironische Aussage, wenn Sie gerade die Berechtigungen auf Ihrem System so geändert haben, dass Rootkits und Viren die Datei frei neu schreiben können. Es spielt keine Rolle, was Sie zu wissen glauben . Führen Sie NIEMALS einen chmod 777 für Systemdateien durch. Die richtigen Berechtigungen für diesen Ordner sind 644. Eine einfache ls -lhawird das zeigen.
Routhinator

16

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


13

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


5
Dies sagt ihm genau, was er tun muss, damit Intellij das Paket findet, das es derzeit nicht findet. Wie beantwortet das nicht seine Frage?
Pattersonkyle

2

Möglicherweise haben Sie ein niedrigeres Projektsprachniveau als Ihr JDK.

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

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

Möglicherweise haben Sie das gleiche Problem.


2

Eine andere Möglichkeit, das Problem zu beheben: Klicken Sie mit der linken Maustaste auf den Projektordner in der Projektstruktur links und klicken Sie in der Liste der Aktionen auf "Moduleinstellungen öffnen". Klicken Sie in den neuen Fenstern im Menü auf SDKs Titel "Plattformeinstellungen" Überprüfen Sie dann in der Liste "Klassenpfad", ob Sie den Pfad des jfxrt-Plugins finden. Wenn nicht, klicken Sie auf das Symbol + rechts und wählen Sie das Repertoire des jfxrt-Plugins aus (C: \ Programme \ Java \ jdk1.8.0 \ jre \ lib \ ext \ jfxrt.jar auf meinem Desktop)


2

Beispiel für eine Java-Anwendung:

Ich poste meine Antwort von einer anderen Frage hier, da sie 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 Zip-Datei für die Verteilung erstellen (Windows muss getestet werden)
  • Kann ohne zusätzliche Konfiguration in IntelliJ 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 Scala- Fall:

Im Folgenden finden Sie außerdem Anweisungen, die mit dem Gradle Scala- Plugin funktionieren, aber anscheinend nicht mit Java funktionieren . 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 verfügt über eine ausführliche Dokumentation dazu

2) Zusätzlich benötigen Sie das JavaFX SDK für Ihre Plattform, das irgendwo entpackt ist. HINWEIS: Stellen Sie sicher, dass Sie nach unten zum Abschnitt " Neueste Versionen" scrollen, in dem sich JavaFX 12 befindet (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 libOrdner aus dem entpackten JavaFX SDK hinzu.

Weitere Anweisungen mit Screenshots finden Sie in den hervorragenden Open JavaFX-Dokumenten für IntelliJ. Ich kann keinen Deep Link zum Laufen bringen. Wählen Sie also JavaFX and IntelliJund dann Modular from IDEin der Dokumentennavigation aus. Scrollen Sie dann nach unten zu Schritt 3. Create a library. Überprüfen Sie auch die anderen Schritte, wenn Sie Probleme haben.

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


2

In IntelliJ Idea,

Überprüfen Sie, ob die folgenden Dinge richtig konfiguriert sind:

Schritt 1:

Datei -> Einstellungen -> Plugins -> javafx durchsuchen und sicherstellen, dass es aktiviert ist.

Schritt 2: Projektstruktur (Strg + Umschalt + Alt + s)

Plattformeinstellungen -> SDKs -> 1.8 -> Stellen Sie sicher, dass Classpath "jre \ lib \ ext \ jfxrt.jar" enthält.

Schritt 3:

Projekteinstellungen -> Projekt -> Projekt-SDK - sollten ausgewählt sein 1.8

Projekteinstellungen -> Projekt -> Projektsprachenebene - konfiguriert als 8

Ubuntu: Wenn Sie jfxrt.jar nicht in Ihren SDKs gefunden haben, installieren Sie sudo apt-get install openjfx


0

Ich hatte das gleiche Problem , in meinem Fall habe ich es gelöst durch :

1) Gehen Sie zu Datei -> Projektstruktur ----> Globale Bibliotheken. 2) Suchen Sie nach jfxrt.jar, das standardmäßig in jdk1.8.0_241 \ lib enthalten ist (nach der Installation). 3) Klicken Sie oben links auf +, um es hinzuzufügen neue globale Bibliothek und ich habe den Pfad meines jdk1.8.0_241 angegeben. Beispiel: (C: \ Programme \ Java \ jdk1.8.0_241).

ich hoffe, dies wird dir helfen

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.