macOS

Übersicht

Dieses Skript lädt automatisch Java 25 herunter und installiert es auf macOS. Es funktioniert sowohl auf Intel (x86_64) als auch auf Apple Silicon (ARM64) Macs.

Download

Voraussetzungen

Führe das Skript mit Administratorrechten aus:

sudo ./install_java25_macos.sh

Was das Skript macht

1. Alte Java-Installationen bereinigen

Das Skript entfernt alle vorhandenen Java-Installationen, um eine saubere Installation zu gewährleisten:

# Remove all Java Virtual Machines
if [[ -d /Library/Java/JavaVirtualMachines ]]; then
  find /Library/Java/JavaVirtualMachines -mindepth 1 -maxdepth 1 -exec rm -rf {} +
fi

# Remove Java plugins and preferences
rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane
rm -rf /Library/Java/Home

2. Java-Installer herunterladen

Das Skript erkennt die Architektur deines Macs und lädt den entsprechenden Java 25 Installer herunter:

# Detect architecture (Intel or Apple Silicon)
case "$(uname -m)" in
  x86_64)
    API_URL="${API_URL_X64}"  # Intel Mac
    ;;
  arm64)
    API_URL="${API_URL_ARM64}"  # Apple Silicon
    ;;
esac

# Download metadata from Adoptium API
curl -fsSL "${API_URL}" -o "${api_json}"

# Extract download URL and checksum from JSON
pkg_url="$(plutil -extract 0.binary.installer.link raw -o - "${api_json}")"
expected_checksum="$(plutil -extract 0.binary.installer.checksum raw -o - "${api_json}")"

# Download the installer package
curl -fL "${pkg_url}" -o "${PKG_FILE}"

# Verify the download integrity
actual_checksum="$(shasum -a 256 "${PKG_FILE}" | awk '{print $1}')"
if [[ "${actual_checksum}" != "${expected_checksum}" ]]; then
  echo "Downloaded installer checksum mismatch."
  exit 1
fi

3. Java installieren

Das Installationspaket wird systemweit installiert:

installer -pkg "${PKG_FILE}" -target /

4. Umgebungsvariablen konfigurieren

Das Skript richtet JAVA_HOME ein und fügt Java zu deinem PATH hinzu:

# Detect where Java was installed
detected_java_home="$("/usr/libexec/java_home" -v "${JAVA_MAJOR}")"

# Create a stable symlink at /Library/Java/Home/jdk-25
ln -sfn "${detected_java_home}" "${JAVA_HOME_LINK}"

# Add Java to system PATH via /etc/paths.d/
printf '%s\n' "${JAVA_HOME_LINK}/bin" > "${PATHS_FILE}"

# Add JAVA_HOME to shell profiles (/etc/profile and /etc/zprofile)
# >>> java-25 managed >>>
export JAVA_HOME="/Library/Java/Home/jdk-25"
# <<< java-25 managed <<<

5. Installation überprüfen

Abschließend testet das Skript, ob Java korrekt funktioniert, indem es ein Testprogramm kompiliert und ausführt:

# Create a test Java file
cat > "${temp_dir}/HelloJava25.java" <<'EOF'
public class HelloJava25 {
    public static void main(String[] args) {
        System.out.println("Java 25 smoke test");
    }
}
EOF

# Compile and run the test
"${JAVA_HOME}/bin/javac" "${temp_dir}/HelloJava25.java"
output="$("${JAVA_HOME}/bin/java" -cp "${temp_dir}" HelloJava25)"

# Verify output
if [[ "${output}" != "Java 25 smoke test" ]]; then
  echo "The Java 25 smoke test failed."
  exit 1
fi

# Show installed versions
java -version
javac -version

Fehlerbehebung

Zugriff verweigert:

Führe das Skript mit sudo aus: sudo ./install_java25_macos.sh

Prüfsumme stimmt nicht überein:

Netzwerkproblem oder beschädigter Download. Führe das Skript erneut aus.

Nicht unterstützte Architektur:

Das Skript unterstützt nur Intel (x86_64) und Apple Silicon (arm64) Macs.

Smoke-Test fehlgeschlagen:

Die Installation könnte beschädigt sein. Führe das Skript erneut aus oder überprüfe die Fehlermeldung.