Linux Java Runtime Environment [work] -
sudo apt update sudo apt install temurin-17-jre # Download from https://adoptium.net/ wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.9%2B9/OpenJDK17U-jre_x64_linux_hotspot_17.0.9_9.tar.gz Extract to /opt sudo tar -xzf OpenJDK17U-jre_x64_linux_hotspot_17.0.9_9.tar.gz -C /opt Set environment variables echo "export JAVA_HOME=/opt/jdk-17.0.9+9-jre" | sudo tee /etc/profile.d/java.sh echo "export PATH=$JAVA_HOME/bin:$PATH" | sudo tee -a /etc/profile.d/java.sh source /etc/profile.d/java.sh 5. Managing Multiple JRE Versions Linux allows multiple JREs side-by-side. Use update-alternatives (Debian/Ubuntu) or manual symlinks. 5.1 Using update-alternatives (Debian family) # Register a new JRE sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1700 List available JREs sudo update-alternatives --config java Switch version interactively (enter selection number) 5.2 Manual management via JAVA_HOME # Set per user (in ~/.bashrc) export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH Or system-wide (in /etc/environment) JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64" 6. Verifying Your JRE Installation | Command | Purpose | |---------|---------| | java -version | Shows JRE vendor, version, and VM mode | | which java | Shows path to java binary | | update-alternatives --list java | Lists all installed JREs (Debian) | | readlink -f $(which java) | Resolves symlinks to actual binary | | ldd $(which java) | Shows linked system libraries | Example validation script: #!/bin/bash echo "Java version:" java -version 2>&1 | head -1 echo "JAVA_HOME: $JAVA_HOME:-not set" echo "Java binary: $(readlink -f $(which java))" 7. JRE in Headless Environments (Servers & Containers) For server applications (no GUI), use headless JRE :
openjdk version "17.0.9" 2023-10-17 OpenJDK Runtime Environment (build 17.0.9+9-Debian-1) OpenJDK 64-Bit Server VM (build 17.0.9+9-Debian-1, mixed mode, sharing) # Fedora (dnf) sudo dnf install java-17-openjdk RHEL / CentOS 7+ (yum/dnf) sudo yum install java-17-openjdk Minimal JRE (headless – no GUI dependencies) sudo yum install java-17-openjdk-headless 3.3 Arch Linux / Manjaro sudo pacman -S jre-openjdk 3.4 Alpine Linux (minimal containers) apk add openjdk17-jre 4. Installing from Third-Party Repos (Adoptium / Temurin) Eclipse Adoptium (formerly AdoptOpenJDK) provides up-to-date LTS releases. Using apt (Debian/Ubuntu): # Install prerequisites sudo apt install wget gnupg Import Adoptium GPG key wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null Add repository echo "deb https://packages.adoptium.net/artifactory/deb $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/adoptium.list linux java runtime environment
# Run with java explicitly java -jar myapp.jar chmod +x myapp.jar 10.5 "UnsupportedClassVersionError" Cause : JAR compiled with newer Java than your JRE. sudo apt update sudo apt install temurin-17-jre #