web-dev-qa-db-ja.com

Linux上のJavaFXが「es2、swのグラフィックデバイスの初期化に失敗しました」を表示している

LinuxでJavaFXのコーディング/テストを始めたばかりで、単純なアプリを起動するときにエラーに直面しています。フォーンでそれについて多くの人々を見つけましたが、それが起こる理由について明確な説明を見つけることができました。私はそれを機能させるために私のシナリオに欠けているものを理解したいと思います。

すべての提案は本当に減価償却されます。

環境情報:

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

例外:

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)

問題のトラブルシューティング方法については、 この関連バグ をご覧ください。要約すると、推奨事項は次のとおりです。

  • -Dprism.verbose=trueフラグを使用してアプリケーションを実行します
  • 生成される詳細なログを確認してください
  • 欠落しているgarphicsライブラリを指している場合があります:LinuxでJavaFXを実行するにはGTK 2.18が必要です
21
assylias

OpenJFXをインストールする必要があります。

apt-get install openjfx

その後、プログラムを実行します。

15
Ajay

この問題を解決して、libswt-gtk-3-Javaとgkt3をシステムに追加します。

8
Wesley Gomes

問題は古いJREバージョンにある可能性があります。これには、libprism_es2.solibglass.soなどの必要なライブラリがすべて含まれていないため、コンソールから/usr/lib/jvm/Java-8-openjdk-AMD64/jre/lib/AMD64. To check if this is the issue compile your Main.Javaクラスに配置する必要があります

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

出力はJava.lang.UnsatisfiedLinkError: Can't load library: /usr/lib/jvm/Java-8-openjdk-AMD64/jre/lib/AMD64/libprism_es2.soである可能性があります。

オラクルの公式Webサイトから最新のJREをダウンロードし、libフォルダーを現在のJREの場所にコピーします。それで十分でしょう。

6
Lera Sinevich

私はgtkライブラリを持っていなかったので、私にとっては失敗していました。 @assyliasが言及した-Dprism.verbose=trueを有効にした後

次のパッケージを見つけてインストールできました。

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

問題を修正しました

4
Pragalathan M

私の場合、問題は64ビットディストリビューションの32ビット依存関係が欠落していました。

私にとって、次のコマンドはUbuntu 16.10(x86-64)の問題を修正しました。

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

関連する質問:

2
cubuspl42

私のために働いた解決策を見つけました、スタックトレースにはこの行よりも多くがあります:

Graphics Device initialization failed for :  es2, sw.

上にスクロールすると、次のような行が表示されます。

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

次に、Oracleから新しいjdkをダウンロードし、そこから欠落しているファイルを、ファイルが欠落しているフォルダーにコピーします。

コピーした合計3つのファイルが欠落していました。これは人によって異なる場合があります

これが皆さんのお役に立てば幸いです

2
Arnold Braine

ArchLinuxの場合:pacman -Sy Java-openjfxは必要なgtk2パッケージをインストールしません(GTK3はカウントしません)。

1
Adam Lee

真新しいUbuntu 18.10のインストールで、マークダウンファイルのプレビューがpycharm(コミュニティエディション)でレンダリングされるときに同じ問題が発生しました。

Oracle JRE(jre1.8.0_201)をダウンロードし、pycharmに同梱されているjreの代わりにそれを使用しましたが、同じ問題が再び発生しました。

次に-Dprism.verbose = trueオプションを追加し、libgtk-x11-2.0.so.0が欠落していることを明らかにしました。最後に、Sudo apt-get install libgtk2.0-0が問題を解決しました。

ありがとう、ポール

1
Paul Bormans

-Dprismオプションが役立ち、ファイルのリストが出力されました。

共有オブジェクトファイルを開けません:ファイルまたはディレクトリが見つかりません。

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

パッケージをインストールした後、動作しました。

0
Lonzak

Eclipseを使用してこの問題に問題がある場合は、-Dprism.verbose=true「デバッグオプション」ウィンドウへのJVM引数(他の応答で既に述べたように)。その後、不足しているライブラリがコンソールにリストされます。

ただし、Java Oracleの公式ページからダウンロードしてインストールするだけで解決しました

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

その後、Javaフォルダーが/usr/Java/jre-1.8.X_XXX(ダウンロードしたバージョンによって異なります)。

次に、Eclipseを開き、Window-> Preferences-> Java-> Installed JREsから、上記のパスを使用して新しいJREを追加します。

ここで、プロジェクトのビルドパスにワークスペースのJREを設定します。

これで動作するはずです。

また、特定のプロジェクトに対してのみJREを設定することもできます。私の場合は、一般的な設定としてより便利でした。

システム:Fedora 26 64ビット。 (jre1.8.0_144)。

0
Marco Doveri