2016-05-15 1 views
2

Итак, я сделал небольшой файл JavaFX, который отлично работает в среде IDE. Но при экспорте в runnable jar in не выполняется двойной клик.Инициализация графического устройства JavaFX не удалась для: es2, sw

В терминале я получаю следующую ошибку. Я бегу Ubuntu 15.04 на 64-битной системе.

Я уже сделал много поиска Google и установил как GTK3 и GTK2 библиотеки. Я знаю, что это копия этого question, но я думаю, что он устарел, и не методы, которые мне помогли.

Я пытался добавить внешние банки к моему проекту, как gtk.jar, swt.jar, свт-GTK-java3.8.jar и установлены все возможные библиотеки как libswt-GTK-3-Явы, libgtk2.0, libgtk2.0-DEV, libswt-GTK-Java-2, libgtk-3-DEV, libgtk-3 и libswt-GTK-4-Java.

Bellow - подробное сообщение об ошибке в терминале с использованием флага -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 

Короткой версия

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

Как выглядит ваш классный путь при выполнении и как вы создаете исполняемый банку? – hotzst

+0

@hotzst Чтобы создать исполняемый jar, я использую проект экспорта Eclipse, runnable jar, пакет необходимых библиотек в jar и finish.I не знакомы с путями классов? –

+0

@hotzst Как настроить класс? –

ответ

0

Что (возможно) происходит неправильно

Чтобы построить исполняемую банку, я использую проект экспорта Eclipse, работоспособную банку, пакет необходимых библиотеку в банку

Don ' t используйте пакетные библиотеки в банке для упаковки приложений JavaFX. Я не являюсь пользователем Eclipse, но это звучит как странный вариант (стандартная упаковка Java не включает файлы библиотеки jar в ваших файлах jar приложения). Поэтому я гугл, что этот вариант и пришел с этим:

кажется, что вариант на самом деле делает место библиотеки внутри приложении баночки и создает какое-то пользовательская систему класса нагрузки в порядке использовать их.

Мое предположение, что вы, возможно, добавили файл jfxrt.jar в качестве файла библиотеки в Eclipse, а затем экспортировали его и добавили в файл приложения jar с помощью опции «package required libraries to jar». Однако jfxrt.jar не является автономным, он не предназначен для использования вне каталога установки Java. jfxrt.jar требует для двоичных файлов (например, .so файлов в файлах unix или .dll в Windows), которые взаимодействуют с графической системой ОС, чтобы JavaFX функционировал правильно. Поэтому вы действительно не должны пытаться извлечь его и использовать его вне установки JRE или self-contained application.

Решение

Что вы должны сделать вместо этого, чтобы упаковать приложение с использованием любого из:

+0

Хм вы можете предоставить более подробную информацию о том, как упаковать его с помощью инструмента javapackager, я использовал команду javapackager -makeall -appclass.What shoud be class paramater –

+0

Я прочитал документацию о javapackager, но ее неясно, что должно быть -appclass paramater? –

Смежные вопросы