Java programs stopped working

I occasionally use Java from the terminal to run TightVNC. Today when I tried I got a bunch of errors. I tried another program (FIBS) and got the same error. These programs did run properly last time I used them. So I rebooted to UbuntuMate 18.04, both programs still run fine. So did Java change? I was hoping someone could make sense of my issue. Below is my terminal output:

@UM20:~/Desktop/temp/JavaFIBS2001$ java -jar JavaFIBS-1.0.12_java16.jar JavaFIBS2001
Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: /usr/lib/jvm/java-11-openjdk-amd64/lib/libawt_xawt.so
	at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2630)
	at java.base/java.lang.Runtime.load0(Runtime.java:768)
	at java.base/java.lang.System.load(System.java:1837)
	at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
	at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2442)
	at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2498)
	at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2694)
	at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2648)
	at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:830)
	at java.base/java.lang.System.loadLibrary(System.java:1873)
	at java.desktop/java.awt.Toolkit$3.run(Toolkit.java:1399)
	at java.desktop/java.awt.Toolkit$3.run(Toolkit.java:1397)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.desktop/java.awt.Toolkit.loadLibraries(Toolkit.java:1396)
	at java.desktop/java.awt.Toolkit.<clinit>(Toolkit.java:1429)
	at java.desktop/java.awt.Component.<clinit>(Component.java:621)
	at JavaFIBS2001.main(Unknown Source)
@UM20:~/Desktop/temp$ java -jar tightvnc-jviewer.jar
Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: /usr/lib/jvm/java-11-openjdk-amd64/lib/libawt_xawt.so
	at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2630)
	at java.base/java.lang.Runtime.load0(Runtime.java:768)
	at java.base/java.lang.System.load(System.java:1837)
	at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
	at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2442)
	at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2498)
	at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2694)
	at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2648)
	at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:830)
	at java.base/java.lang.System.loadLibrary(System.java:1873)
	at java.desktop/java.awt.Toolkit$3.run(Toolkit.java:1399)
	at java.desktop/java.awt.Toolkit$3.run(Toolkit.java:1397)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.desktop/java.awt.Toolkit.loadLibraries(Toolkit.java:1396)
	at java.desktop/java.awt.Toolkit.<clinit>(Toolkit.java:1429)
	at java.desktop/java.awt.Component.<clinit>(Component.java:621)
@UM20:~/Desktop/temp$

the error shows it could not load java-11 so verify which java you have on 20.04 (java --version). Do the same on 18.04 and install the same version so that tightvnc can work. You can switch between java versions on your system with sudo update-alternatives --config java

3 Likes

There is not much difference between versions. build 11.0.11+9 vice build 11.0.10+9, Was there a significant change in the 20 April update? Also, how would I install build 11.0.10+9 alongside 11.0.11+9?

@UM20:~$ java --version
openjdk 11.0.11 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing)
@UM20:~$

@UM18:~$ java --version
openjdk 11.0.10 2021-01-19
OpenJDK Runtime Environment (build 11.0.10+9-Ubuntu-0ubuntu1.18.04)
OpenJDK 64-Bit Server VM (build 11.0.10+9-Ubuntu-0ubuntu1.18.04, mixed mode, sharing)
@UM18:~$

On your Ubuntu MATE 20.04 system which exhibits the Java error, try the command:

ls -l /usr/lib/jvm/java-11-openjdk-amd64/lib/libawt_xawt.so

I want to see whether the file is missing entirely, or if it's a broken symlink. If the former, then that command should fail with a "No such file or directory" error. If the latter, then ls should display the link in red.

If the above command fails, list off the contents of the parent directory:

ls -l /usr/lib/jvm/java-11-openjdk-amd64/lib

The first command should failed with a "No such file or directory" error.

UM20:~$ ls -l /usr/lib/jvm/java-11-openjdk-amd64/lib/libawt_xawt.so
ls: cannot access '/usr/lib/jvm/java-11-openjdk-amd64/lib/libawt_xawt.so': No such file or directory
UM20:~$ ls -l /usr/lib/jvm/java-11-openjdk-amd64/lib
total 146540
-rw-r--r-- 1 root root 39196 Apr 21 05:15 classlist
-rw-r--r-- 1 root root 4496444 Apr 21 05:15 ct.sym
-rw-r--r-- 1 root root 63 Apr 21 05:15 jar.binfmt
-rwxr-xr-x 1 root root 14552 Apr 21 05:15 jexec
drwxr-xr-x 2 root root 4096 May 3 06:41 jfr
drwxr-xr-x 2 root root 4096 May 3 06:41 jli
-rw-r--r-- 1 root root 106257 Apr 21 05:15 jrt-fs.jar
-rwxr-xr-x 1 root root 18648 Apr 21 05:15 jspawnhelper
lrwxrwxrwx 1 root root 34 Apr 21 05:15 jvm.cfg -> /etc/java-11-openjdk/jvm-amd64.cfg
-rw-r--r-- 1 root root 278 Apr 21 05:15 jvm.cfg-default
-rw-r--r-- 1 root root 14392 Apr 21 05:15 libattach.so
-rw-r--r-- 1 root root 39112 Apr 21 05:15 libawt_headless.so
-rw-r--r-- 1 root root 708496 Apr 21 05:15 libawt.so
-rw-r--r-- 1 root root 30792 Apr 21 05:15 libdt_socket.so
-rw-r--r-- 1 root root 14392 Apr 21 05:15 libextnet.so
-rw-r--r-- 1 root root 60280 Apr 21 05:15 libfontmanager.so
-rw-r--r-- 1 root root 47168 Apr 21 05:15 libinstrument.so
-rw-r--r-- 1 root root 47160 Apr 21 05:15 libj2gss.so
-rw-r--r-- 1 root root 18488 Apr 21 05:15 libj2pcsc.so
-rw-r--r-- 1 root root 81416 Apr 21 05:15 libj2pkcs11.so
-rw-r--r-- 1 root root 14392 Apr 21 05:15 libjaas.so
-rw-r--r-- 1 root root 47160 Apr 21 05:15 libjavajpeg.so
-rw-r--r-- 1 root root 182000 Apr 21 05:15 libjava.so
-rw-r--r-- 1 root root 248960 Apr 21 05:15 libjdwp.so
-rw-r--r-- 1 root root 30952 Apr 21 05:15 libjimage.so
-rw-r--r-- 1 root root 14392 Apr 21 05:15 libjsig.so
-rw-r--r-- 1 root root 71736 Apr 21 05:15 libjsound.so
-rw-r--r-- 1 root root 22584 Apr 21 05:15 liblcms.so
-rw-r--r-- 1 root root 14392 Apr 21 05:15 libmanagement_agent.so
-rw-r--r-- 1 root root 30776 Apr 21 05:15 libmanagement_ext.so
-rw-r--r-- 1 root root 22584 Apr 21 05:15 libmanagement.so
-rw-r--r-- 1 root root 612488 Apr 21 05:15 libmlib_image.so
-rw-r--r-- 1 root root 96320 Apr 21 05:15 libnet.so
-rw-r--r-- 1 root root 75840 Apr 21 05:15 libnio.so
-rw-r--r-- 1 root root 14320 Apr 21 05:15 libprefs.so
-rw-r--r-- 1 root root 14320 Apr 21 05:15 librmi.so
-rw-r--r-- 1 root root 51344 Apr 21 05:15 libsaproc.so
-rw-r--r-- 1 root root 30784 Apr 21 05:15 libsctp.so
-rw-r--r-- 1 root root 199456 Apr 21 05:15 libsunec.so
-rw-r--r-- 1 root root 107416 Apr 21 05:15 libunpack.so
-rw-r--r-- 1 root root 67720 Apr 21 05:15 libverify.so
-rw-r--r-- 1 root root 34872 Apr 21 05:15 libzip.so
-rw-r--r-- 1 root root 142112588 Apr 21 05:15 modules
lrwxrwxrwx 1 root root 41 Apr 21 05:15 psfontj2d.properties -> /etc/java-11-openjdk/psfontj2d.properties
lrwxrwxrwx 1 root root 41 Apr 21 05:15 psfont.properties.ja -> /etc/java-11-openjdk/psfont.properties.ja
drwxr-xr-x 2 root root 4096 May 3 06:41 security
drwxr-xr-x 2 root root 4096 May 3 06:41 server
-rw-r--r-- 1 root root 107921 Apr 21 05:15 tzdb.dat
UM20:~$

@jaybo

Installed sudo apt install apt-file,
then sudo apt-file update,
then apt-file search libawt_xawt

Library is in openjdk-11-jre-headless.

I don't see openjdk-11-jre-headless.

UM20:~$ apt-file search libawt_xawt
openjdk-11-jre: /usr/lib/jvm/java-11-openjdk-amd64/lib/libawt_xawt.so
openjdk-11-jre-headless: /usr/lib/jvm/java-11-openjdk-amd64/lib/libawt_xawt.so
openjdk-13-jre-headless: /usr/lib/jvm/java-13-openjdk-amd64/lib/libawt_xawt.so
openjdk-14-jre-headless: /usr/lib/jvm/java-14-openjdk-amd64/lib/libawt_xawt.so
openjdk-16-jre: /usr/lib/jvm/java-16-openjdk-amd64/lib/libawt_xawt.so
openjdk-8-jre-headless: /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libawt_xawt.so
UM20:~$

The 3rd line of what you posted ...

openjdk-11-jre-headless: /usr/lib/jvm/java-11-openjdk-amd64/lib/libawt_xawt.so

I see. Now what? Can I fix java? Should I remove and re-install. I am confused what has gone wrong to begin with. I assume something changed with the 20 April update?

check what you have installed ... dpkg -l | grep openjdk

Install (or reinstall) sudo apt install openjdk-11-jre

verify /usr/lib/jvm/java-11-openjdk-amd64/lib/libawt_xawt.so exists

Test with tightvnc

1 Like

Thank you. When I reinstalled, 5 new packages were installed. I get the same results as before when checking Java version. However, all works now. I don't know what broke the previous installation, but thanks again for helping me correct the problem.

That's just how you know you're running a Debian Unstable-based system! :grin: (Ubuntu is generally based on Debian Unstable IIRC.)

I've had the same problem with Java 16, when I only installed openjdk-16-jre-headless.

This should help:

sudo apt install openjdk-11-jre

1 Like