Java JDK capable of running JavaFX applications on Jetson boards with OpenGL acceleration

Hi there,

regarding the use of the Jetson boards (I have both a TX2 and a Nano), I should consider whether it is possible to use a java application (possibly jdk 8u112 based) that uses the jfx library with OpenGL acceleration.

I didn’t find any useful and up-to-date information except that probably I have to use openjdk and openjfx.

Could you give me some links about a complete working package?

Thx in advance

  • Stefano

Hi,
There is no Java involved in each L4T releases, so it is highly possible it does not work.
If there is Java packages for arm64(aarch64), you may give it a try. Don’t see many discussions about running Java on Jetson platforms, but probably some users can share experience.

Stefano,
I’m using A LOT of Java (including Java FX and JCuda) in my SBC’s projects (jetson nano, rbpi’s and odroids XU4).

I’ve sent you a private message yesterday about this question.

Please let me know if you have other questions.

BR,
Ivan

Hi,

I would like to ask if you managed to resolve getting JavaFX to work on the TX2?

I’ve been trying and installing different editions of java without success. Any help would be much appreciated.

Thank you,
Chris

I got it to work… for anyone else that lands here I did the following:

  1. Downloaded Liberica JDK version 11 - from options Linux/Arm/Full JDK Deb file
  2. Installed as sudo from terminal - sudo apt install ./name_of_file.deb
  3. From https://gluonhq.com/products/javafx/ downloaded the v11 JavaFX Linux SDK not the armv6hf
  4. extracted the JavaFX to a folder in the home directory
  5. from https://openjfx.io/openjfx-docs/#install-javafx followed instructions to add PATH_TO_FX in path
  6. from https://github.com/openjfx/samples/blob/master/HelloFX/CLI/hellofx/HelloFX.java downloaded sample javaFX file
  7. compiled with javac --module-path $PATH_TO_FX --add-modules javafx.controls HelloFX.java
  8. ran the sample file with java --module-path $PATH_TO_FX --add-modules javafx.controls HelloFX

Thanks

1 Like

Hi Chris- I tried the above steps on my nano and got:

java --module-path $PATH_TO_FX --add-modules javafx.controls -Dprism.verbose=true -Djavafx.verbose=true HelloFX

JavaFX launchApplication method: launchMode=LM_CLASS
Prism pipeline init order: es2 sw
Using Double Precision Marlin 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
WARNING: java.lang.UnsatisfiedLinkError: /home/rpease/JavaFXTests/javafx-sdk-11.0.2/lib/libprism_es2.so: /home/rpease/JavaFXTests/javafx-sdk-11.0.2/lib/libprism_es2.so: cannot open shared object file: No such file or directory (Possible cause: can’t load AMD 64-bit .so on a AARCH64-bit platform)
GraphicsPipeline.createPipeline failed for com.sun.prism.es2.ES2Pipeline
java.lang.UnsatisfiedLinkError: no prism_es2 in java.library.path: [/usr/java/packages/lib, /lib, /usr/lib]
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2670)

Looks like the file is meant for x86:
rpease@jetsonnano:~/JavaFXTests$ file /home/rpease/JavaFXTests/javafx-sdk-11.0.2/lib/libprism_sw.so
/home/rpease/JavaFXTests/javafx-sdk-11.0.2/lib/libprism_sw.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=812b7fa79ea11554bfb6c5b3503145528f1239f5, not stripped

Is there an AARCH64 version I didn’t see?

Hi Roger,

I’m pretty sure I used the normal Linux SDK…

Unfortunately I’ve since removed the install from my device (TX2) so I’m unable to check. I had a lot of trouble getting it to work with my specific project. I would have loved to use JavaFX for the UI.

I ended up using Python with GTK + webkit view to load a html / bootstrap file locally on the device.

Chris