I know that Oracle removed JavaFX in 8u33, but I'm wondering why I can't use JavaFX with jdk1.8.0? I got it from the Oracle archives (http://download.oracle.com/otn/java/jdk/8-b132/jdk-8-linux-arm-vfp-hflt.tar.gz)
I have this extracted in /usr/bin/java_8_arm/jdk1.8.0
and am running my .jar file with sudo /usr/bin/java_8_arm/jdk1.8.0/bin/java -jar jarfile.jar
Running /usr/bin/java_8_arm/jdk1.8.0/bin/java -version
returns
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)
and running System.out.println("Running Java version: " + Runtime.class.getPackage().getImplementationVersion());
returns Running Java Version: 1.8.0
The error I'm getting is:
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
If you're wondering, I'm programming and compiling the program to a shared file via Windows 7 and running the JAR from a Raspberry Pi.
inb4 "why do you need javafx on a raspberry pi" - to render html, since other java components only support html 3.2. I have tried other renderers. This is the only one I could even get working right on my desktop, let alone the RPi.
Also, I am programming and compiling on 1.8.0 as well.
UPDATE:
As per José Pereda's answer, I have downloaded the JavaFX files and placed them in my original java install (I am now using /usr/bin/jdk8u6/
as my folder, and obviously jdk1.8.0_06
).
Here is my install hierarchy, starting from the lib
directory:
/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
I still get the same error.
See Question&Answers more detail:
os