openJDK 10 deprecated, how to switch to version 11?

Hi,

All my recent Processing projects were written with openJDK 10 in IntelliJ Idea, using the Processing jar files as a library. Everything was good :slight_smile:

After I upgraded Ubuntu, openJDK 10 is gone, and I can now only install 8, 11, 12 and 13. Going back to 8 would involve changing all my code and removing all the nice new Java features.

With version 11, I get

/usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java -Djava.library.path=/.../processing/libraries/GameControlPlus/library:/...processing_sam/linux/work/core/library -javaagent:/snap/intellij-idea-community/177/lib/idea_rt.jar=36435:/snap/intellij-idea-community/177/bin -Dfile.encoding=UTF-8 -classpath /home/fp/workspace/aBeLive/bin/production/aBeLive:/.../processing/libraries/hemesh/library/eclipse-collections-9.0.0.jar:/.../processing/libraries/hemesh/library/eclipse-collections-api-9.0.0.jar:/.../processing/libraries/hemesh/library/hemesh-data-3_0_0.jar:/.../processing/libraries/hemesh/library/hemesh-external-6_0_0.jar:/.../processing/libraries/hemesh/library/hemesh-lab.jar:/.../processing/libraries/hemesh/library/hemesh.jar:/.../processing/libraries/hemesh/library/javaluator-3.0.2.jar:/.../processing/libraries/controlP5/library/controlP5.jar:/.../processing/libraries/peasycam/library/peasy-math.jar:/.../processing/libraries/peasycam/library/peasycam.jar:/.../processing/libraries/themidibus/library/themidibus.jar:/.../processing/libraries/oscP5/library/oscP5.jar:/home/fp/.m2/repository/com/cedarsoftware/json-io/4.10.0/json-io-4.10.0.jar:/.../processing/libraries/VideoExport/library/VideoExport.jar:/.../processing/libraries/video/library/jna.jar:/.../processing/libraries/video/library/video.jar:/.../processing/libraries/video/library/gst1-java-core-1.1.0.jar:/.../processing/libraries/colorutils/library/colorutils.jar:/.../processing/libraries/datautils/library/datautils.jar:/.../processing/libraries/toxiclibs_p5/library/toxiclibs_p5.jar:/.../processing/libraries/toxiclibscore/library/toxiclibscore.jar:/.../processing/libraries/volumeutils/library/volumeutils.jar:/.../processing/libraries/GameControlPlus/library/GameControlPlus.jar:/home/fp/workspace/libs/javax.activation-1.2.0.jar:/home/fp/workspace/libs/javax.mail.jar:/...processing_sam/linux/work/core/library/javafx.base.jar:/...processing_sam/linux/work/core/library/gluegen-rt-natives-linux-amd64.jar:/...processing_sam/linux/work/core/library/jogl-all-natives-linux-i586.jar:/...processing_sam/linux/work/core/library/jogl-all.jar:/...processing_sam/linux/work/core/library/javafx.web.jar:/...processing_sam/linux/work/core/library/javafx.fxml.jar:/...processing_sam/linux/work/core/library/jogl-all-natives-linux-amd64.jar:/...processing_sam/linux/work/core/library/gluegen-rt.jar:/...processing_sam/linux/work/core/library/javafx-swt.jar:/...processing_sam/linux/work/core/library/gluegen-rt-natives-linux-i586.jar:/...processing_sam/linux/work/core/library/core.jar:/...processing_sam/linux/work/core/library/javafx.graphics.jar:/...processing_sam/linux/work/core/library/javafx.media.jar:/...processing_sam/linux/work/core/library/javafx.swing.jar:/...processing_sam/linux/work/core/library/javafx.controls.jar aBeLive.AbeLive
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.jogamp.common.os.NativeLibrary$3 (file:/home/bla/Downloads/installers/2019-09-01_01-15-52_linux_x64_processing_sam/linux/work/core/library/gluegen-rt.jar) to method java.lang.ClassLoader.findLibrary(java.lang.String)
WARNING: Please consider reporting this to the maintainers of com.jogamp.common.os.NativeLibrary$3
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Inconsistency detected by ld.so: dl-lookup.c: 112: check_match: Assertion `version->filename == NULL || ! _dl_name_match_p (version->filename, map)' failed!

Same error when trying @sampottinger’s binaries and Processing 3.5.3’s.

Any suggestions to make programs run with Java 11?

1 Like

The linker is buggered on stock OpenJDK, I suggest you install AdoptOpenJDK11+ instead, that is what Sam Pottingers fork is doing. There is a choice of jvm to to install hotspot is the conservative choice.

1 Like

Thanks for the tip! I’m going to try figure that out and report back.

The download URL seems to be this:

1 Like

There is a *.deb file available for ubuntu.

Works! Thank you!

I didn’t find the .deb.

  • I got the AdoptOpenJDK11 .tar.gz
  • Unpacked it somewhere
  • In Idea
    • open Project Structure > SDK, add the new SDK folder just unpacked
    • Run > Edit configurations, in the existing configuration, change JRE to point to the new SDK
  • Run program, enjoy :slight_smile:
1 Like

For future use here’s a link to linux distro releases:-

Support Matrix

1 Like

Gee now I see what I did wrong. The Ubuntu openJDK 11 package does indeed work, so no AdoptOpenJDK download required in my case.

There are 5 places where you can change settings related to the version, and I had not changed the important one which is this:


I already had a version 11 there, but it was broken somehow so I deleted all SDKs from the list and I added the right path in /usr/lib/jvm/ and voilà!

These are the other locations:




I forgot how to configure this properly as I didn’t change it in years :sweat:

2 Likes

Thank you so much for taking the time to document how to do this in IntelliJ Idea, @hamoid – really helpful.

1 Like

I know this post is a bit old but I thought it might still be relevant. I wanted to give an update on this because things are now different in my two computers:

In my Ubuntu 20.04 with GTX1060 using IntelliJ Idea I’m running programs fine with the standard openjdk-14-jdk package, the Processing 3.5.4 libraries, using Java 14 features and half of my source code files are now in Kotlin instead of Java.

In my Archlinux laptop with Intel Graphics 4600, same IDE, same Processing, same programs fail to run using the ArchLinux java-14-openjdk package (Inconsistency detected by ld.so) but run fine if I use jdk-adoptopenjdk from AUR (which currently comes with version 15).

So the situation seems to be reversed: adoptopenjdk no longer needed in my Ubuntu, but now it is in Arch.

So @monkstone’s suggestion seems to still be valid :slight_smile:

1 Like