3

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$ 
neophytte
  • 153

1 Answers1

11

Minecraft: Java Edition version 1.18 won't work on Java 8. It requires Java 17. If Minecraft is the only thing you use Java for, I'd suggest uninstalling what you have now:

sudo apt remove default-jre default-jdk
sudo apt autoremove

Now, install OpenJDK 17:

sudo apt update
sudo apt install openjdk-17-jre

We don't install the JDK because it is for compiling Java programs. You aren't, instead you are running one (Minecraft), so you only need the JRE.

Minecraft Version Java Version
1.16 16
1.17 16
1.18 17
cocomac
  • 3,394
  • I run java 17 on kubuntu 21.10. I installed Oracle java because I wasn't sure if openjdk was Ok. Now thanks to cocomac I know it. I used this method from linuxuprising . – G Ugauga Dec 04 '21 at 11:51
  • @GUgauga Happy to help. I use OpenJDK (or on Windows, Adoptium, which used to be called AdoptOpenJDK) for everything, and I haven't had to use Oracle Java in years, so you should be fine to use OpenJDK for Minecraft (and most other things, too) – cocomac Dec 04 '21 at 16:37