当前位置: 首页 > 面试题库 >

运行jdk1.8.0的ARM上的JavaFX

张浩阔
2023-03-14
问题内容

我知道Oracle在8u33中删除了JavaFX,但是我想知道为什么我不能在jdk1.8.0中使用JavaFX?我是从Oracle存档(http://download.oracle.com/otn/java/jdk/8-b132/jdk-8-linux-
arm-vfp-
hflt.tar.gz

)中获得的

我已经提取了这个/usr/bin/java_8_arm/jdk1.8.0并正在运行我的.jar文件sudo /usr/bin/java_8_arm/jdk1.8.0/bin/java -jar jarfile.jar

连续/usr/bin/java_8_arm/jdk1.8.0/bin/java -version收益

java version "1.8.0"
Java (TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot (TM) client VM (build 25.0-b70, mixed mode)

并运行 System.out.println("Running Java version: " + Runtime.class.getPackage().getImplementationVersion());

退货 Running Java Version: 1.8.0

我得到的错误是:

Exception in thread "main" java.lang.NoClassDefFoundError: javafx/embed/swing/JFXPanel
    at front_end.GUI.initGUI(GUI.java:47)
    at back_end.Run.main(Run.java:28)
Caused by: java.lang.ClassNotFoundException: javafx.embed.swing.JFXPanel
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 2 more

如果您想知道,我正在通过Windows 7编写程序并将其编译为共享文件,并从Raspberry Pi运行JAR。

inb4“为什么在树莓派上需要javafx”-呈现html,因为其他java组件仅支持html
3.2。我尝试了其他渲染器。这是我什至可以在桌面上正常工作的唯一工具,更不用说RPi了。

另外,我也在1.8.0上进行编程和编译。

更新:

按照JoséPereda的回答,我已经下载了JavaFX文件,并将它们放在我的原始Java安装/usr/bin/jdk8u6/文件中(显然,我现在用作我的文件夹jdk1.8.0_06)。

这是我的安装层次结构,从lib目录开始:

/usr/bin/jdk8u6/lib/:
arm ext             javafx.properties  jfxswt.jar  tools.jar
ct.sym  ir.idl              jconsole.jar       orb.idl
dt.jar  javafx.platform.properties  jexec          sa-jdi.jar

/usr/bin/jdk8u6/lib/arm:
jli          libgstreamer-lite.so        libjfxmedia.so
libdecora_sse.so     libjavafx_font_freetype.so  libjfxwebkit.so
libfxplugins.so      libjavafx_font_pango.so     libprism_common.so
libglass_monocle.so  libjavafx_font.so       libprism_es2_eglfb.so
libglass_monocle_x11.so  libjavafx_iio.so        libprism_es2_monocle.so
libglass.so      libjawt.so          libprism_sw.so

/usr/bin/jdk8u6/lib/arm/jli:
libjli.so

/usr/bin/jdk8u6/lib/ext:
jfxrt.jar

我仍然遇到相同的错误。


问题答案:

您可以从此处下载JavaFX for ARM的更新和升级版本:JavaFX Embedded
SDK

一旦下载到Raspberry Pi上,您将需要提取内容并将其复制到JDK
1.8中(检查此链接是否为嵌入式)。

您将能够在Pi上运行 ARM * 的最新JavaFX版本,包括WebView控件。

另外,通过将Gluon插件用于您的IDE,您还可以在Pi上远程部署项目。

编辑

  • ARM:请注意,JavaFX for ARM从未支持Swing。WebView和Media等其他功能也不受支持,但最近这些功能已包含在Gluon的版本中。


 类似资料:
  • 返回 我得到的错误是: 如果你想知道的话,我正在通过Windows7编程并编译程序到一个共享文件,并从一个Raspberry PI运行JAR。 下面是我的安装层次结构,从目录开始: 我还是得到同样的错误。

  • 是否可以在其他具有Linux功能的ARM设备(如Raspberry Pi)上运行为Android构建的ARM二进制文件(而不是.apk)?我正在尝试将我的一个项目移植到ARM上,但我需要使用一个封闭源代码二进制(SopCast),它仅适用于x86(Windows和Linux)和(最近)Android设备。 运行显示ELF 32位LSB可执行文件,ARM,版本1(SYSV),动态链接(使用共享库),

  • 我的Raspberry Pi上有一个Python脚本,运行在ArchLinuxARM上。要启动脚本,我使用以下命令: 它工作得很好。现在,我的问题是,如何在启动时自动运行此脚本?

  • NanoPC T3,有一些信息: 我做过: > 下载jdk-8u144-linux-arm32-vfp-hflt.tar.gz 下载JavaFX Embedded SDK 根据javafxports复制文件 编写示例应用程序和包,在我的NanoPC T3上运行: null

  • 问题内容: 今天,每个现代OS都提供一些原子操作: Windows具有API FreeBSD有 Solaris有 Mac OS X具有 像Linux一样的东西吗? 我需要它在大多数Linux支持的平台上工作,包括:x86,x86_64和 arm 。 我至少在GCC和Intel编译器上需要它。 我不需要使用像glib或qt这样的3rd par库。 我需要它才能在C ++中工作(不需要C) 问题: G

  • 问题内容: 我有一个运行Linux Ubuntu的Freescale(i.MX53)的ARM Coretex-A8开发板。它可以正常启动,我可以使用鼠标/键盘/终端访问系统。 首先,我想让一个应用程序在主机OS内的板上运行,就像在PC上运行应用程序一样。 我的问题是,使用基于cc的YAGARTO之类的工具链来编译我的测试程序,因为我没有定义任何启动脚本,所以最终在链接方面遇到麻烦。 我发现了许多有