web-dev-qa-db-fra.com

JavaFX sous Linux affiche un message "Echec de l'initialisation du périphérique graphique pour: es2, sw"

Je viens de commencer à coder/tester des éléments JavaFX sous Linux et je suis confronté à une erreur au moment de démarrer une application simple. J'ai trouvé beaucoup de gens inquiets à ce sujet dans Foruns mais je pouvais trouver une explication claire des raisons pour lesquelles cela se produit. J'aimerais comprendre ce qui manque dans mon scénario pour que cela fonctionne.

Toute suggestion sera vraiment appréciée.

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

Exception:

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

Vous devriez consulter ce bogue connexe pour obtenir de l'aide sur la façon de résoudre votre problème. En résumé, les recommandations sont les suivantes:

  • lancer l'application avec l'indicateur -Dprism.verbose=true
  • vérifier le journal détaillé qui est produit
  • il peut indiquer une bibliothèque garphics manquante: GTK 2.18 est requis pour exécuter JavaFX sur Linux
20
assylias

Je résous ce problème en ajoutant les libswt-gtk-3-Java et gkt3 à mon système.

9
Wesley Vial Gomes

Vous devez installer OpenJFX:

apt-get install openjfx

puis exécutez le programme.

7
Ajay

Le problème peut provenir de votre ancienne version de JRE, qui ne contient pas toutes les bibliothèques nécessaires, telles que libprism_es2.so ou libglass.so, qui devrait être situé dans la classe /usr/lib/jvm/Java-8-openjdk-AMD64/jre/lib/AMD64. To check if this is the issue compile your Main.Java à partir de la console. 

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

La sortie devrait éventuellement être Java.lang.UnsatisfiedLinkError: Can't load library: /usr/lib/jvm/Java-8-openjdk-AMD64/jre/lib/AMD64/libprism_es2.so.

Téléchargez le dernier JRE à partir du site Web officiel d’Oracle et copiez le dossier lib sur votre emplacement actuel. Cela devrait suffire.

5
Lera Sinevich

Cela échouait pour moi parce que je n'avais pas de bibliothèque gtk. Après avoir activé -Dprism.verbose=true comme mentionné par @assylias

je pourrais trouver et installer les paquets suivants.

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

Ça corrige le problème

4
Pragalathan M

Dans mon cas, il manquait des dépendances 32 bits sur la distribution 64 bits.

Pour moi, la commande suivante a corrigé le problème sous Ubuntu 16.10 (x86-64):

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

Questions connexes:

1
cubuspl42

J'ai trouvé une solution qui a fonctionné pour moi, le stacktrace a plus que cette ligne: 

Graphics Device initialization failed for :  es2, sw.

faites défiler vers le haut et vous trouverez une ligne qui ressemble à suivre:

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

Maintenant, téléchargez le nouveau jdk à partir d’Oracle, copiez le fichier manquant à partir de là dans le dossier où il manque. 

Il me manquait 3 fichiers au total que j'ai copiés, cela peut varier d'une personne à l'autre

J'espère que cela aide certains d'entre vous

1
Arnold Braine

L'option -Dprism a aidé ensuite à imprimer une liste de fichiers:

Impossible d'ouvrir le fichier d'objet partagé: Fichier ou répertoire introuvable.

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

Après avoir installé les paquets, cela a fonctionné.

0
Lonzak

Pour ceux qui utilisent ArchLinux: pacman -Sy Java-openjfx n'installe pas le package gtk2 nécessaire (GTK3 ne compte pas).

0
Adam Lee

Sur la toute nouvelle installation d'Ubuntu 18.10, j'ai rencontré le même problème lorsqu'un aperçu d'un fichier de démarquage est rendu dans pycharm (édition communautaire).

J'ai téléchargé un JRE Oracle (jre1.8.0_201) et je l'ai utilisé à la place du jre livré avec pycharm, mais j'ai à nouveau le même problème.

Ensuite, nous avons ajouté l'option -Dprism.verbose = true qui a révélé que libgtk-x11-2.0.so.0 était manquant. Enfin, sudo apt-get install libgtk2.0-0 a résolu le problème.

Merci, Paul

0
Paul Bormans

Pour ceux qui ont des problèmes avec ce problème avec Eclipse, la solution peut être trouvée en ajoutant -Dprism.verbose=true aux arguments de la machine virtuelle Java dans la fenêtre "Options de débogage" (comme déjà mentionné dans d'autres réponses). Après cela, les bibliothèques manquantes seront listées dans la console. 

Cependant, j'ai résolu simplement le téléchargement et l'installation de Java à partir de la page officielle d'Oracle

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

Après cela, vous trouverez le dossier Java sous /usr/Java/jre-1.8.X_XXX (cela dépend de la version que vous avez téléchargée).

Ensuite, ouvrez Eclipse et depuis Fenêtre-> Préférences-> Java-> JRE installés, ajoutez un nouveau JRE en utilisant le chemin mentionné ci-dessus.

Maintenant, set JRE de workspace sur le chemin de génération de votre projet.

Cela devrait fonctionner maintenant. 

Vous pouvez également définir le JRE uniquement pour un projet spécifique, dans mon cas, il était plus utile en tant que paramètre général.

Système: Fedora 26 64 bits. (jre1.8.0_144).

0
Marco Doveri