How do I install java 16 so my kids and friends can get on our old 1.16.5 Minecraft server?
raspbian - Installing OpenJDK 16 on Raspberry Pi 4 - Raspberry Pi Stack Exchange
Problem installing openjdk-11-jdk
How to install Java?
Videos
I don't understand why they make packages inaccessible. I know they're not secure I have firewalls.... why does life have to be so hard? :) :) :) :(
had the same problem too.. but i solved it with these commands:
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jre
The one I did on 16.04 was:
For OpenJDK 8.X
sudo apt install openjdk-8-jre
For OpenJDK 9.X
sudo apt install openjdk-9-jre
Note: There was no openjdk-6-jre nor openjdk-7-jre for me on Ubuntu 16.04. Also there is NO need to install Oracle JDK (Actually OpenJDK is much better than Oracle one for me).
I wrestled with the same issue a few days ago.
I have been running a Minecraft server on a Raspberry Pi 4, using Java 8, installed via sudo apt install openjdk-8-jdk.
However, as of snapshot 21w19a, which was a few snapshots before the 1.17 release, Java 16 has become the minimum for Minecraft.
The Java 16 binary in the openjdk-16.0.1_linux-aarch64_bin.tar.gz file I downloaded from http://jdk.java.net/16/ gives an error when run on my Raspberry Pi 4:
$ ./jdk-16.0.1/bin/java --version
-bash: ./jdk-16.0.1/bin/java: cannot execute binary file: Exec format error
If we use file on that binary, we can see a bit more detail:
$ file ./jdk-16.0.1/bin/java
./jdk-16.0.1/bin/java: ELF 64-bit LSB shared object, ARM aarch64,
version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1,
for GNU/Linux 3.7.0, not stripped
Note "64-bit" and "ARM aarch64".
Compare this with the working Java 8 binary I have - note "32-bit" here:
$ file /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/java
/usr/lib/jvm/java-8-openjdk-armhf/jre/bin/java: ELF 32-bit LSB executable, ARM,
EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3,
for GNU/Linux 3.2.0, BuildID[sha1]=6d2781f51a497603976e8fee28b888bd771fd5b7, stripped
I believe (I'm no expert) that the Raspberry Pi 4 CPU is able to run aarch64 code, but the current default OS doesn't support it.
$ uname -a
Linux [name] 5.10.17-v7l+ #1414 SMP Fri Apr 30 13:20:47 BST 2021 armv7l GNU/Linux
There, note armv7l.
This article - "How to Make Your Raspberry Pi 4 Faster with a 64 Bit Kernel" helped me to understand a little more. If I read that right, although we could edit /boot/config.txt to include the arm_64bit=1, that would give us a 64 bit kernel, but not the ability to run 64 bit aarch64 binaries, because we still have a 32 bit userland. (If I've misunderstood here, I'd appreciate if someone could correct me so I can learn.)
So, summary so far: Oracle supply a Java 16 JDK at jdk.java.net, but the only ARM binary there is aarch64. I think this may be supported by the processor on the Raspberry Pi 4, but not by the default OS.
Luckily, AdoptOpenJDK (run by a community of Java User Group members, including some big names) seem to make a wider variety of Java binaries available for download.
I went to https://adoptopenjdk.net/releases.html and made the following choices:
Version: OpenJDK 16 (Latest)
- Chose because Java 16 is the minimum for Minecraft 1.17 (see top of post).
- Note this isn't a "Long Term Support" (LTS) version. This Minecraft Paper server post about Java 16 explains more.
JVM: HotSpot
- The alternative option here is OpenJ9, but I believe that Mojang ship and test Minecraft with the HotSpot JVM, so that's what I chose.
Operating System: Linux
Architecture: arm32
- Not
aarch64: see above
- Not
JDK or JRE: JRE
- To run Minecraft, all we need is a
javabinary. So the Java Runtime Environment (JRE) is fine. The Java Development Kit (JDK) includes more tools, but the JRE is a smaller download and installation, so I went for that. See this question for more on JDK vs JRE.
- To run Minecraft, all we need is a
Those choices have given me a working Java 16:
$ ./jdk-16.0.1+9-jre/bin/java -version
openjdk version "16.0.1" 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-16.0.1+9 (build 16.0.1+9)
OpenJDK Server VM AdoptOpenJDK-16.0.1+9 (build 16.0.1+9, mixed mode)
$ file ./jdk-16.0.1+9-jre/bin/java
./jdk-16.0.1+9-jre/bin/java: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV),
dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0,
not stripped
... and this is working so far for me, in the limited testing I've done so far, with the vanilla 1.17 server JAR I downloaded from https://www.minecraft.net/en-us/download/server.
I did the following and it worked for me (To install openjdk 16 for minecraft 1.17.1):
First I downloaded any jdk by using:
sudo apt install openjdk-8-jdk
Then I downloaded this file and extracted it in a new folder under /usr/lib/jvm
After that I runned:
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/{name of the folder you just created}/bin/java 1131
And then I checked it was installed and selected by using:
sudo update-alternatives --config java