webentwicklung-frage-antwort-db.com.de

JavaFX unter Linux zeigt an, dass die Initialisierung von Grafikgeräten für: es2, sw fehlgeschlagen ist.

Ich habe gerade damit begonnen, JavaFX-Zeug unter Linux zu programmieren/zu testen, und zu einem bestimmten Zeitpunkt ist ein Fehler beim Starten einer einfachen App aufgetreten. Ich habe in Foruns viele Leute gefunden, die sich mit mir befassen, aber ich konnte eine klare Erklärung finden, warum es so ist. Ich möchte verstehen, was in meinem Szenario fehlt, damit es funktioniert.

Jeder Vorschlag wird wirklich geschätzt.

Env info:

Java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b123)
Java HotSpot(TM) Client VM (build 25.0-b65, mixed mode)

Linux MYServer 2.6.21-1.3228.fc7 #1 SMP Tue Jun 12 15:37:31 EDT 2007 i686 i686 i386 GNU/Linux

Ausnahme:

Graphics Device initialization failed for :  es2, sw
Error initializing QuantumRenderer: no suitable pipeline found
Java.lang.RuntimeException: Java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
        at com.Sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.Java:300)
        at com.Sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.Java:244)
        at com.Sun.javafx.tk.Toolkit.getToolkit(Toolkit.Java:179)
        at com.Sun.javafx.application.PlatformImpl.startup(PlatformImpl.Java:210)
        at com.Sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.Java:653)
        at com.Sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.Java:314)
        at com.Sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.Java:305)
        at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:62)
        at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
        at Java.lang.reflect.Method.invoke(Method.Java:483)
        at Sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.Java:767)
Caused by: Java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
        at com.Sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.Java:98)
        at com.Sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.Java:128)
        at Java.lang.Thread.run(Thread.Java:744)
Exception in thread "main" Java.lang.reflect.InvocationTargetException
        at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:62)
        at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
        at Java.lang.reflect.Method.invoke(Method.Java:483)
        at Sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.Java:767)
Caused by: Java.lang.RuntimeException: No toolkit found
        at com.Sun.javafx.tk.Toolkit.getToolkit(Toolkit.Java:191)
        at com.Sun.javafx.application.PlatformImpl.startup(PlatformImpl.Java:210)
        at com.Sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.Java:653)
        at com.Sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.Java:314)
        at com.Sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.Java:305)
25
RLM

Sie sollten in diesem verwandten Fehler nach Hilfe zur Fehlerbehebung suchen. Zusammenfassend sind die Empfehlungen:

  • führen Sie die Anwendung mit dem Flag -Dprism.verbose=true aus
  • Überprüfen Sie das ausführliche Protokoll, das erstellt wird
  • möglicherweise weist dies auf eine fehlende Garphics-Bibliothek hin: GTK 2.18 ist erforderlich, um JavaFX unter Linux auszuführen
20
assylias

Ich löse dieses Problem und füge libswt-gtk-3-Java und gkt3 meinem System hinzu.

9

Sie müssen OpenJFX installieren:

apt-get install openjfx

und dann das Programm ausführen.

7
Ajay

Das Problem kann in Ihrer alten JRE-Version liegen, die nicht alle erforderlichen Bibliotheken enthält, z. B. libprism_es2.so oder libglass.so, die sich in der /usr/lib/jvm/Java-8-openjdk-AMD64/jre/lib/AMD64. To check if this is the issue compile your Main.Java-Klasse der Konsole befinden sollten 

javac Main.Java  
Java -Dprism.verbose=true Main

Die Ausgabe sollte möglicherweise Java.lang.UnsatisfiedLinkError: Can't load library: /usr/lib/jvm/Java-8-openjdk-AMD64/jre/lib/AMD64/libprism_es2.so sein.

Laden Sie die neueste JRE von der offiziellen Oracle-Website herunter und kopieren Sie den lib-Ordner in Ihren aktuellen JRE-Speicherort. Das sollte genug sein.

5
Lera Sinevich

Es scheiterte für mich, weil ich keine Gtk-Bibliotheken hatte. Nach dem Aktivieren von -Dprism.verbose=true, wie von @assylias erwähnt

ich konnte die folgenden Pakete finden und installieren.

Sudo apt-get install libgtk2.0-bin libXtst6 libxslt1.1

Das Problem wurde behoben

4
Pragalathan M

In meinem Fall fehlten 32-Bit-Abhängigkeiten bei der 64-Bit-Verteilung.

Für mich hat der folgende Befehl das Problem auf Ubuntu 16.10 (x86-64) behoben:

Sudo apt-get install libgtk2.0-0:i386 libxtst6:i386

Verwandte Fragen:

1
cubuspl42

Ich habe eine Lösung gefunden, die für mich funktioniert hat, der Stacktrace hat mehr zu bieten als diese Zeile: 

Graphics Device initialization failed for :  es2, sw.

scrollen Sie nach oben und Sie werden eine Zeile finden, die wie folgt aussieht:

Caused by: Java.lang.RuntimeException: Java.lang.UnsatisfiedLinkError: Can't load library: /usr/lib/jvm/Java-8-openjdk-AMD64/jre/lib/AMD64/libglass.so

Laden Sie nun die neue jdk von Oracle herunter, kopieren Sie die fehlende Datei von dort in den Ordner, in dem die Datei fehlt. 

Insgesamt fehlten mir 3 Dateien, die ich kopiert habe. Dies kann von Person zu Person variieren

Ich hoffe, das hilft einigen von euch

1
Arnold Braine

Die Option -Dprism half dabei, eine Liste der Dateien wurde ausgedruckt:

Freigegebene Objektdatei kann nicht geöffnet werden: Datei oder Verzeichnis nicht gefunden.

  1. libgtk-x11-2.0.so.0
  2. libXxf86vm.so.1
  3. libGL.so.1

Nach der Installation der Pakete hat es funktioniert.

0
Lonzak

Für diejenigen, die sich auf ArchLinux befinden: pacman -Sy Java-openjfx installiert nicht das erforderliche gtk2-Paket (GTK3 zählt nicht).

0
Adam Lee

Bei der brandneuen Installation von Ubuntu 18.10 stieß ich auf das gleiche Problem, wenn eine Vorschau einer Markdown-Datei in pycharm (Community Edition) gerendert wurde.

Ich habe eine Oracle JRE (jre1.8.0_201) heruntergeladen und anstelle der mit pycharm gelieferten jre verwendet, aber ich habe wieder das gleiche Problem.

Dann wurde die Option -Dprism.verbose = true hinzugefügt, aus der hervorgeht, dass libgtk-x11-2.0.so.0 fehlt. Schließlich löste Sudo apt-get install libgtk2.0-0 das Problem.

Danke, Paul

0
Paul Bormans

Für alle, die Probleme mit diesem Problem bei der Verwendung von Eclipse haben, kann die Lösung -Dprism.verbose=true zu JVM-Argumenten im Fenster "Debug-Optionen" hinzugefügt werden (wie bereits in anderen Antworten erwähnt). Danach werden fehlende Bibliotheken in der Konsole aufgelistet. 

Ich habe jedoch das einfache Herunterladen und Installieren von Java von der offiziellen Oracle-Seite gelöst. 

https://www.Java.com/it/download/

Danach finden Sie den Java-Ordner unter /usr/Java/jre-1.8.X_XXX (abhängig davon, welche Version Sie heruntergeladen haben).

Öffnen Sie dann Eclipse und fügen Sie unter Fenster-> Voreinstellungen-> Java-> Installierte JREs eine neue JRE mit dem oben genannten Pfad hinzu.

Jetzt setzen Sie JRE des Arbeitsbereichs auf den Erstellungspfad Ihres Projekts.

Es sollte jetzt klappen. 

Sie können die JRE auch nur für ein bestimmtes Projekt festlegen. In meinem Fall war die allgemeine Einstellung hilfreich.

System: Fedora 26 64 Bit. (jre1.8.0_144).

0
Marco Doveri