Can not use JavaFX on Fiji ? (at OpenJDK)

Hi, everyone

I think Fiji has recently been built with OpenJDK(adoptOpenJDK), but it does not contain JavaFX.
Some of my plugins use JavaFX, so I tried to install JavaFX(11) and start one of them.
Then, an error message popped up.

java.lang.UnsupportedClassVersionError: javafx/embed/swing/JFXPanel has been compiled by a more recent version of the Java Runtime (class file version 54.0), this version of the Java Runtime only recognizes class file versions up to 52.0

The meaning of this message seems to appear if the versions of java used to build Fiji and JavaFX are different.
OracleJDK8 contains JavaFX, but OpenJDK does not contain it.
And I can not find JavaFX built with Java8.
Is there any way to work it?

hwada

Since Java 9 JavaFX is not bundled anymore with the JDK. You can find JavaFX and more information here:

https://openjfx.io/

There’s a discussion here that’s relevant: java.lang.NoClassDefFoundError: javafx/geometry/Point3D

JavaFX with OpenJDK 8 is also an active topic at https://github.com/AdoptOpenJDK/openjdk-build/issues/577

1 Like

I know that.
But Fiji is still a build with java8, right?
And if JavaFX’s external library is installed on Fiji, I think that works, is it not?

hwada

Thanks, I am going to check these topics.

You have to check this in your downloaded version. The JavaFX 8 *.jar libraries are located in the jre/lib/ext folder.

I read “Point3D” topic. and I understood following.

Fiji aims to build on java11, but it takes time, so for the time being, Fiji intends to survive using adoptJDK with JavaFX8.

However, it does not work at present, so does it mean that there is nothing for it but to use it in the previous version?

hawed

Your advice is probably about using it directly installed on own computer, but when I thought about distributing the plugin, I thought it would be useful if there was something included in the body of Fiji and there was no way to do it.
It seems that there is a way to compile it on its own, but it is difficult to force each user to do it.
*I used machine translation mainly because I hurry up, sorry.

hwada

As of this writing, the Fiji download bundles for Windows and Linux ship with Oracle JRE 8, which includes JavaFX. The macOS bundle of Fiji ships with AdoptOpenJDK8, which does not include JavaFX.

On macOS, you can switch your Fiji back to Oracle JRE 8 by downloading this bundle, unpacking it, and replacing your Fiji.app/java folder with that one instead. Then Fiji will use Oracle JRE 8 again, which includes JavaFX.

Alternately, you can try installing openjfx into your Fiji’s bundled OpenJDK8 bundle, but I personally have not attempted to do this yet, so I do not know if there are obstacles.

4 Likes

Thank you for your reply.
I am going to tell this to my plugin users.

For now, I could downgrade in this way and my plugins can work.
The point of success was to change the directory name “jre1.8.0_172.jre” to “jre”.
However I have not checked installing of JavaFX which is built with Java8.
I’m going to keep going about this.

hwada

Just to tidy up this thread, for others who come across this:

There are now (at least) two distributions of OpenJDK 8 that include JavaFX:

We are going to update Fiji’s bundled JDK to the JBRSDK8 soon.

4 Likes

@ctrueden,

Hello, even here.

My plugin is currently using JavaFX, and My computer is MacOS(Mojave).
So, a little while ago I was using Fiji by replacing it with ImageJ172 as above, but for some reason it did not start.(Probably because I updated something)
I would appreciate if you could tell me the progress of this matter.

hwada

We were nearly finished with a new release of Fiji that would include the JBRSDK8, which ships with JavaFX as well as HiDPI fixes and other niceties. But then the ImageJ web resources suffered a security incident (see here for details if interested), and we have been laser focused on upgrading the server configuration for the past month. Fortunately, we are nearly finished with that work, and will then return to completing the Fiji release and upgrading downloadable Fiji bundles to JBRSDK8. ETA before end of August.

To keep track of the progress more closely, you can follow this issue:

1 Like

@ctrueden,
Thank you for your reply.
And thank you for migrating imagej.net.
I would also like to thank you for your efforts in solving some of the problems in Fiji.

*Currently, this issue can be addressed by replacing the jre from Imagej172 in Fiji before the update.

hwada