2016-05-15 3 views
2

So machte ich kleine JavaFX Projekt, das in IDE gut läuft. Aber wenn in Runnable JAR in exportiert wird nicht auf Doppelklick ausgeführt.JavaFX-Grafik-Gerät Initialisierung fehlgeschlagen für: es2, sw

Im Terminal bekomme ich folgenden Fehler. Ich laufe Ubuntu 15.04 auf 64bit System.

Ich habe schon viele Google-Suche und installiert sowohl GTK3 und GTK2 Bibliotheken. Ich bin mir bewusst, dass dies eine Kopie dieser question ist, aber ich denke, es ist veraltet und nicht die Methoden dort haben mir geholfen.

habe ich versucht, externe Gläser zu meinem Projekt als gtk.jar Zugabe, swt.jar, swt-gtk-java3.8.jar und installierte alle möglichen Bibliotheken wie libswt-gtk-3-java, libgtk2.0, libgtk2.0-dev, libswt-GTK-java-2, libgtk-3-dev, libgtk-3 und libswt-GTK-4-java.

Unten ist eine detaillierte Fehlermeldung im Terminal unter Verwendung der Flagge -Dprism.verbose=true.

Prism pipeline init order: es2 sw 
Using java-based Pisces rasterizer 
Using dirty region optimizations 
Not using texture mask for primitives 
Not forcing power of 2 sizes for textures 
Using hardware CLAMP_TO_ZERO mode 
Opting in for HiDPI pixel scaling 
Prism pipeline name = com.sun.prism.es2.ES2Pipeline 
Loading ES2 native library ... prism_es2 
GraphicsPipeline.createPipeline failed for com.sun.prism.es2.ES2Pipeline 
java.lang.UnsatisfiedLinkError: Can't load library: /home/nemanja/amd64/libprism_es2.so 
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1827) 
    at java.lang.Runtime.load0(Runtime.java:809) 
    at java.lang.System.load(System.java:1086) 
    at com.sun.glass.utils.NativeLibLoader.loadLibraryFullPath(NativeLibLoader.java:201) 
    at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:94) 
    at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:39) 
    at com.sun.prism.es2.ES2Pipeline.lambda$static$464(ES2Pipeline.java:68) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.prism.es2.ES2Pipeline.<clinit>(ES2Pipeline.java:50) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:264) 
    at com.sun.prism.GraphicsPipeline.createPipeline(GraphicsPipeline.java:187) 
    at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:91) 
    at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124) 
    at java.lang.Thread.run(Thread.java:745) 
*** Fallback to Prism SW pipeline 
Prism pipeline name = com.sun.prism.sw.SWPipeline 
GraphicsPipeline.createPipeline failed for com.sun.prism.sw.SWPipeline 
java.lang.UnsatisfiedLinkError: Can't load library: /home/nemanja/amd64/libprism_sw.so 
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1827) 
    at java.lang.Runtime.load0(Runtime.java:809) 
    at java.lang.System.load(System.java:1086) 
    at com.sun.glass.utils.NativeLibLoader.loadLibraryFullPath(NativeLibLoader.java:201) 
    at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:94) 
    at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:39) 
    at com.sun.prism.sw.SWPipeline.lambda$static$472(SWPipeline.java:42) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.prism.sw.SWPipeline.<clinit>(SWPipeline.java:41) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:264) 
    at com.sun.prism.GraphicsPipeline.createPipeline(GraphicsPipeline.java:187) 
    at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:91) 
    at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124) 
    at java.lang.Thread.run(Thread.java:745) 
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:280) 
    at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:221) 
    at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:205) 
    at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:209) 
    at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:675) 
    at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:337) 
    at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328) 
    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:498) 
    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:94) 
    at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124) 
    at java.lang.Thread.run(Thread.java:745) 
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:498) 
    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:217) 
    at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:209) 
    at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:675) 
    at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:337) 
    at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328) 
    ... 5 more 

Kurzversion

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:280) 
    at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:221) 
    at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:205) 
    at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:209) 
    at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:675) 
    at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:337) 
    at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328) 
    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:498) 
    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:94) 
    at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124) 
    at java.lang.Thread.run(Thread.java:745) 
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:498) 
    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:217) 
    at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:209) 
    at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:675) 
    at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:337) 
    at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328) 
    ... 5 more 
+0

Wie sieht Ihr Klassenpfad bei der Ausführung aus und wie haben Sie das ausführbare jar erstellt? – hotzst

+0

@hotzst Um ausführbare jar, ich benutze Eclipse-Export-Projekt, runnable jar, Paket benötigt Bibliotheken in jar und fertig.Ich bin nicht vertraut mit Klassenpfad? –

+0

@hotzst Wie lege ich den Klassenpfad fest? –

Antwort

0

Was ist (wahrscheinlich) schief gehen

ausführbare jar zu erstellen, verwende ich Eclipse-Exportprojekt, runnable Glas, Paket benötigte Bibliotheken in jar

Don ' t Verwenden Sie die "package required libraries in jar", um JavaFX-Anwendungen zu paketieren. Ich bin kein Eclipse-Benutzer, aber das klang wie eine seltsame Option (die Standard-Java-Paketierung enthält keine Bibliotheks-JAR-Dateien in den JAR-Dateien Ihrer Anwendung). So gegoogelt ich, was diese Option ist und kam mit dieser:

Es scheint, dass die Option funktioniert tatsächlich statt Bibliotheken in Ihrem Anwendung Glas und schafft eine Art von benutzerdefinierten Klassenladesystem um um sie zu benutzen.

Meine Vermutung ist, dass Sie die jfxrt.jar-Datei als Bibliotheksdatei in Eclipse hinzugefügt haben und dann exportiert und durch die Option "Paket benötigte Bibliotheken in jar" zu Ihrer JAR-Datei hinzugefügt werden. Jfxrt.jar ist jedoch keine eigenständige Sache, es ist nicht dafür gedacht, außerhalb des Verzeichnisses der Java Runtime-Installation verwendet zu werden. jfxrt.jar benötigt Binärdateien (z. B. .so-Dateien unter Unix- oder .dll-Dateien unter Windows), die mit dem Grafiksystem des Betriebssystems verbunden sind, damit JavaFX korrekt funktioniert. Sie sollten also nicht versuchen, es zu extrahieren und es außerhalb einer JRE-Installation oder einer self-contained application verwenden.

+0

Hmm können Sie mehr Details zur Verfügung stellen, wie man es mit javapackager Werkzeug packen, benutzte ich Befehl javapackager -makeall -appclass.What sollte Klasse parameter –

+0

ich lese die Dokumentation über javapackager, aber es ist nicht klar, Was sollte -appclass parameter sein? –