Soru Linux'ta JavaFX, “Grafik Aygıtı başlatması başarısız oldu: es2, sw”


Sadece Linux üzerinde JavaFX kodlarını test etmeye / test etmeye başladım ve basit bir uygulamayı başlatmak için zamanında bir hatayla karşılaşıyorum. Foruns'ta bununla ilgili birçok insan buldum ama bunun nedenleri hakkında net bir açıklama bulabilirim. Çalışmam için senaryonun neyi eksik olduğunu anlamak isterim.

Herhangi bir öneri gerçekten aprivalated olacaktır.

Env bilgisi:

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

İstisna:

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)

22
2018-01-17 11:44


Menşei




Cevaplar:


Bir göz atmalısın bu ilgili hata Sorununuzu nasıl gidereceğiniz konusunda yardım için. Özet olarak, öneriler şunlardır:

  • uygulamayı -Dprism.verbose=true bayrak
  • üretilen detaylı logu kontrol edin
  • eksik bir garphics kütüphanesine işaret edebilir: Linux üzerinde JavaFX'i çalıştırmak için GTK 2.18 gereklidir

17
2018-01-18 11:53



Neden emin değilsiniz ama -Dprism.verbose = true hata mesajıyla ilgili fazladan bilgi eklemiyor. Her neyse, grafik kütüphanesi sahip olduğum bir problemdir (mevcut GTK 2.16). Bunu güncellemeyi ve çalışmayı deneyeceğim. Teşekkürler assylias! - RLM
@assylias Ben benzer sorunla karşılaşıyorum. Bu komutu hangi uygulama ile yazmam gerektiğini söyler misiniz -Dprism.verbose=true . Linux'ta yeniyim. Bu yüzden sorunu nasıl düzelteceğine dair hiçbir fikrim yok. - Harshita Sethi
@HARSHITASETHI ile uygulamanızı çalıştırırsınız java -jar blabla.jar sadece ekle -Dprism.verbose=true. IDE'nizden çalıştırırsanız, bunu JVM parametrelerine eklemeniz gerekir. - assylias
Tamam anladım. Teşekkürler. :) - Harshita Sethi
@assylias Benzer bir problem alıyorum. Cevapta verdiğiniz bağlantı artık aktif değil. Ayrıca GTK'yi ahududu pi'ye taktım. Sorun hala devam ediyor. - Krishna Kuntala


Bu sorunu libswt-gtk-3-java ve gkt3'ü sistemime ekleyerek çözüyorum.


5
2017-10-21 21:00



Linux üzerinde gtk3'ü yüklemek için hangi komutları verdiniz? - Krishna Kuntala
Başsız modda çalışıyorsanız, xvfb'ye de ihtiyacınız olacak. - Bruno


Sorun, gerekli tüm kütüphaneleri içermeyen eski JRE sürümünüzde olabilir. libprism_es2.so veya libglass.so, içinde bulunması gereken /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64. To check if this is the issue compile your Main.java konsoldan sınıf

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

Çıkış muhtemelen olmalı java.lang.UnsatisfiedLinkError: Can't load library: /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libprism_es2.so.

Resmi Oracle web sitesinden en yeni JRE'yi indirin ve lib klasörünü mevcut JRE konumunuza kopyalayın. O kadarı yeterli olacaktır.


4
2017-09-23 17:28



Mükemmel cevap. Fedora'da, paketin yüklenerek yüklenecek adı bulunabilir. dnf whatprovides <path-to-missing-library>. Ve sonra tekrar dnf ile yükleyin. Benim durumum sudo dnf install java-1.8.0-openjdk-openjfx. - czerny


Benim için başarısız oldu, çünkü libk lib'ları yoktu. Etkinleştirdikten sonra -Dprism.verbose=true @assylias tarafından belirtildiği gibi

Aşağıdaki paketleri bulabilir ve yükleyebilirim.

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

Sorunu çözdü


3
2017-12-13 19:53





Benim durumumda, sorun 64-bit dağıtımında 32-bit bağımlılıkları eksikti.

Benim için aşağıdaki komut Ubuntu 16.10 (x86-64) üzerinde sorunu çözdü:

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

İlgili sorular:


1
2018-04-06 14:48





OpenJFX'i kurmanız gerekiyor:

apt-get install openjfx

ve sonra programı çalıştırın.


1
2017-08-19 10:50



Yukarıdakilerin hepsini denedikten sonra, bu gerçekten çözümdür. Teşekkürler! - Simon Baars


Benim için çalışan bir çözüm buldum, stacktrace'in bu çizgiden daha fazlası var:

Graphics Device initialization failed for :  es2, sw.

yukarı kaydırın ve aşağıdaki gibi görünen bir çizgi bulacaksınız:

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

Şimdi oracle'den yeni jdk dosyasını indirin, eksik dosyayı oradan dosyanın bulunduğu klasöre kopyalayın.

Kopyaladığım toplam 3 dosya eksikti, bu kişiden kişiye değişebilir

Umarım bu bazılarınız size yardımcı olur


1
2018-02-21 08:04





Eclipse kullanarak bu sorunla ilgili sorun yaşayan herkes için çözüm ekleniyor. -Dprism.verbose=true JVM argümanlarına "Hata ayıklama seçenekleri" penceresine (diğer yanıtlarda daha önce bahsedildiği gibi). Bundan sonra, eksik kütüphaneler konsola listelenecektir.

Ancak, Java’yı Oracle’ın resmi sayfasından indirip yükledim.

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

Bundan sonra, Java klasörünü altında bulacaksınız. /usr/java/jre-1.8.X_XXX (Bu, hangi sürümü indirdiğinize bağlıdır).

Ardından, Eclipse'i açın ve Window-> Preferences-> Java-> Installed JREs'den yukarıda belirtilen yolu kullanarak yeni bir JRE ekleyin.

Şimdi, projenizin yapım yolunda çalışma alanının JRE'sini belirleyin.

Şimdi çalışmalı.

JRE'yi sadece belirli bir proje için de ayarlayabilirsiniz, benim durumumda genel ayar olarak daha faydalıdır.

Sistem: Fedora 26 64 bit. (Jre1.8.0_144).


0
2017-09-23 12:13