Linux 无法将JavaFX应用程序部署到Raspberry Pi

Linux 无法将JavaFX应用程序部署到Raspberry Pi,linux,intellij-idea,javafx,deployment,raspberry-pi,Linux,Intellij Idea,Javafx,Deployment,Raspberry Pi,我想在IntelliJ中的raspberry pi上部署我的javafx应用程序(使调试更容易)。为此,我安装了以下用于嵌入式linux开发的插件: 我可以很好地连接到Pi。部署也可以正常工作。但是,一旦执行以下命令,就会出现问题: 执行命令:sudo java-Dprism.verbose=true-cp classes:lib/'*'runnable.MainApp 出现了大量的类文件(例如classes/mypackage/MyClass.class),最终,我得到了以下堆栈跟踪,我不确定

我想在IntelliJ中的raspberry pi上部署我的javafx应用程序(使调试更容易)。为此,我安装了以下用于嵌入式linux开发的插件:

我可以很好地连接到Pi。部署也可以正常工作。但是,一旦执行以下命令,就会出现问题:

执行命令:sudo java-Dprism.verbose=true-cp classes:lib/'*'runnable.MainApp

出现了大量的类文件(例如
classes/mypackage/MyClass.class
),最终,我得到了以下堆栈跟踪,我不确定该如何处理它。 Pi的内核版本是:
Linux raspberrypi 4.4.50-v7+#970 SMP Mon Feb 20 19:18:29 GMT 2017 armv7l GNU/Linux

GraphicsPipeline.createPipeline failed for com.sun.prism.es2.ES2Pipeline
java.lang.ClassNotFoundException: com.sun.prism.es2.ES2Pipeline
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    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/pi/IdeaProjects/user_interface/arm/libprism_sw.so
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
    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:497)
    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:497)
    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
Prism管道名称=com.sun.Prism.sw.SWPipeline
com.sun.prism.sw.SWPipeline的graphicsipeline.createPipeline失败
java.lang.UnsatifiedLink错误:无法加载库:/home/pi/IdeaProjects/user\u interface/arm/libprism\u sw.so
位于java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
位于java.lang.Runtime.load0(Runtime.java:809)
位于java.lang.System.load(System.java:1086)
位于com.sun.glass.utils.NativeLibLoader.loadLibraryFullPath(NativeLibLoader.java:201)
位于com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:94)
位于com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:39)
com.sun.prism.sw.SWPipeline.lambda$static$472(SWPipeline.java:42)
位于java.security.AccessController.doPrivileged(本机方法)
位于com.sun.prism.sw.SWPipeline(SWPipeline.java:41)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(Class.java:264)
在com.sun.prism.GraphicsPipeline.createPipeline(GraphicsPipeline.java:187)上
位于com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:91)
位于com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)
运行(Thread.java:745)
图形设备初始化失败:es2,sw
初始化QuantumRenderer时出错:未找到合适的管道
java.lang.RuntimeException:java.lang.RuntimeException:初始化QuantumRenderer时出错:未找到合适的管道
位于com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:280)
位于com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:221)
位于com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:205)
位于com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:209)
在com.sun.javafx.application.launchempl.startToolkit上(launchempl.java:675)
位于com.sun.javafx.application.LaunchImpl.launchApplicationWithArgs(LaunchImpl.java:337)
位于com.sun.javafx.application.LaunchImpl.launchApplication(LaunchImpl.java:328)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:497)
位于sun.launcher.launchelper$FXHelper.main(launchelper.java:767)
原因:java.lang.RuntimeException:初始化QuantumRenderer时出错:未找到合适的管道
位于com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:94)
位于com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)
运行(Thread.java:745)
线程“main”java.lang.reflect.InvocationTargetException中出现异常
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:497)
位于sun.launcher.launchelper$FXHelper.main(launchelper.java:767)
原因:java.lang.RuntimeException:未找到工具箱
位于com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:217)
位于com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:209)
在com.sun.javafx.application.launchempl.startToolkit上(launchempl.java:675)
位于com.sun.javafx.application.LaunchImpl.launchApplicationWithArgs(LaunchImpl.java:337)
位于com.sun.javafx.application.LaunchImpl.launchApplication(LaunchImpl.java:328)
... 还有5个

您是否安装了用于ARM的JavaFX?如果是,您使用的是哪些SDK版本(JDK和JavaFX)?还有,你想用帧缓冲区吗?我不这么认为。在我自己的机器上,我正在使用JDK1.8.0_121。如何为ARM安装JavaFX?我负责的Oracle最近放弃了对它的支持,但是我不确定这个问题有多大。请参阅或,并确保您拥有最新的JavaFXSDK for ARM