Trying to upgrade Java to the latest version of the Minecraft server (v1.18), I had a bit of a drama because the server was initially running Ubuntu 19.x, so I've converted to 20.04 after finding the place that allows me to update all the packages and do the upgrade.
After this I have installed the JRE, this is the same command showing the version I am up to:
mortimer@mineraft:/home/minecraft$ sudo apt-get install default-jre
Reading package lists... Done
Building dependency tree
Reading state information... Done
default-jre is already the newest version (2:1.11-72).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Similarly with the JDK:
mortimer@mineraft:/home/minecraft$ sudo apt-get install default-jdk
Reading package lists... Done
Building dependency tree
Reading state information... Done
default-jdk is already the newest version (2:1.11-72).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Running update-alternatives:
mortimer@mineraft:/home/minecraft$ sudo update-alternatives --config java
There are 4 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
3 /usr/lib/jvm/jdk-16.0.1/bin/java 0 manual mode
- 4 /usr/local/java/jre1.8.0_311/bin/java 1 manual mode
Press <enter> to keep the current choice[*], or type selection number:
But if I run my Q&D start command:
mortimer@mineraft:/home/minecraft$ cat start.sh
#!/bin/bash
sudo java -Xmx6G -Xms4G -jar /home/minecraft/spigot-1.18.jar nogui > /dev/console
I get a nice error from the server stating:
mortimer@mineraft:/home/minecraft$ sudo ./start.sh
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/bukkit/craftbukkit/bootstrap/Main has been compiled by a more recent version of the Java Runtime (class file version 60.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:601)
mortimer@mineraft:/home/minecraft$
Can anyone shed light on what I have done wrong?
Thanks
[edit - adding java -version]
mortimer@mineraft:/home/minecraft$ java -version
java version "1.8.0_311"
Java(TM) SE Runtime Environment (build 1.8.0_311-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.311-b11, mixed mode)
mortimer@mineraft:/home/minecraft$
java -version
in a terminal? – cocomac Dec 04 '21 at 00:57openjdk-17-jre
. – cocomac Dec 04 '21 at 01:15