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
フラグを使用してアプリケーションを実行しますOpenJFXをインストールする必要があります。
apt-get install openjfx
その後、プログラムを実行します。
この問題を解決して、libswt-gtk-3-Javaとgkt3をシステムに追加します。
問題は古いJREバージョンにある可能性があります。これには、libprism_es2.so
やlibglass.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の場所にコピーします。それで十分でしょう。
私はgtkライブラリを持っていなかったので、私にとっては失敗していました。 @assyliasが言及した-Dprism.verbose=true
を有効にした後
次のパッケージを見つけてインストールできました。
Sudo apt-get install libgtk2.0-bin libXtst6 libxslt1.1
問題を修正しました
私の場合、問題は64ビットディストリビューションの32ビット依存関係が欠落していました。
私にとって、次のコマンドはUbuntu 16.10(x86-64)の問題を修正しました。
Sudo apt-get install libgtk2.0-0:i386 libxtst6:i386
関連する質問:
私のために働いた解決策を見つけました、スタックトレースにはこの行よりも多くがあります:
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つのファイルが欠落していました。これは人によって異なる場合があります
これが皆さんのお役に立てば幸いです
ArchLinuxの場合:pacman -Sy Java-openjfx
は必要なgtk2
パッケージをインストールしません(GTK3はカウントしません)。
真新しい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が問題を解決しました。
ありがとう、ポール
-Dprismオプションが役立ち、ファイルのリストが出力されました。
共有オブジェクトファイルを開けません:ファイルまたはディレクトリが見つかりません。
パッケージをインストールした後、動作しました。
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)。