Umschalten zwischen mehreren Java-Versionen unter Windows - Feature-Bild

Umschalten zwischen mehreren Java-Versionen unter Windows (aktualisiert 03/2021 für Java 16)

von Sven Woltmann – 16. März 2021

Als Java-Programmierer arbeite ich an verschiedenen Projekten, die – insbesondere seit der Umstellung auf den Sechs-Monats-Releasezyklus – auf unterschiedlichen Java-Versionen basieren. Auch habe ich immer wieder ein Stück Java-Code, das ich auf verschiedenen Java-Versionen ausprobieren möchte - und zwar auf der Kommandozeile, ohne mich durch die Menüs meiner IDE klicken zu müssen. Von daher ist es hilfreich, schnell und einfach die Java-Version, die zum Kompilieren und/oder Ausführen verwendet werden soll, wechseln zu können. 

In diesem Artikel zeige ich euch, wie ihr unter Windows mehrere Java-Versionen gleichzeitig installiert und auf der Kommandozeile mit kurzen Befehlen zwischen diesen wechselt.

Installation mehrerer Java-Versionen

Mehrere Java-Versionen gleichzeitig zu installieren ist unter Windows kinderleicht. Ihr könnt einfach die Installer der einzelnen Versionen herunterladen und ausführen – jede Version wird automatisch in ein separates Verzeichnis installiert.

Downloadquellen

  • Java SE 1.1 – Diese Version lässt sich auf einem 64-Bit-Windows nicht mehr installieren.
  • Java SE 1.2 – Wird standardmäßig nach C:\jdk1.2.2\ und C:\Program Files (x86)\JavaSoft\JRE\1.2\ installiert – ich empfehle das der Übersicht halber auf C:\Program Files (x86)\Java\jdk1.2.2\ und C:\Program Files (x86)\Java\jre1.2.2\ zu ändern.
  • Java SE 1.3 – Wird standardmäßig nach C:\jdk1.3.1_28\ installiert – ich empfehle das auf C:\Program Files (x86)\Java\jdk1.3.1_28\ zu ändern.
  • Java SE 1.4 – Wird standardmäßig nach C:\j2sdk1.4.2_19\ installiert – ich empfehle das auf C:\Program Files (x86)\Java\jdk1.4.2_19\ zu ändern.

Ab den folgenden Versionen sollten die Standard-Installationsverzeichnisse beibehalten werden:

Achtung – folgende Versionen dürfen in der Oracle-Distribution nur noch für private Zwecke und zur Entwicklung eingesetzt werden:

Die folgende Versione ist zum aktuellen Zeitpunkt ein Early Access Build und sollte nur zum Testen verwendet werden:

Umgebungsvariablen

Welche Java-Version verwendet wird, entscheiden in den meisten Fällen die folgenden zwei Umgebungsvariablen:

  • JAVA_HOME – viele Start-Skripte verwenden diese Variable.
  • Path – wird verwendet, wenn man aus der Konsole eine Java-Binary (java, javac, etc...) aufruft.

Diese Variablen sollten immer auf die gleiche Java-Installation zeigen, um unvorhergesehene Probleme durch Inkonsistenzen zu vermeiden. Manche Programme, wie z. B. Eclipse definieren die Java-Version in einer eigenen Konfigurationsdatei (bei Eclipse ist dies bspw. der Eintrag "-vm" in der Datei eclipse.ini).

Manuelles Setzen der Umgebungsvariablen

Die Installer der oben aufgelisteten Java-Versionen legen bereits diverse Umgebungsvariablen an, welche zunächst einmal aufgeräumt werden müssen. Der schnellste Weg die Umgebungsvariablen zu ändern, ist es die Windows-Taste zu drücken und dann "env" einzutippen – als Suchergebnis wird dann direkt "Edit the system environment variables" angeboten:

Suche nach "env"
Suche nach "env"

An dieser Stelle kann man nun einfach auf "Enter" drücken, worauf hin sich die Systemeigenschaften öffnen:

Windows 10 Systemeigenschaften
Windows 10 Systemeigenschaften

Hier klickt man nun auf "Environment Variables...", woraufhin sich das folgende Fenster öffnet:

Windows 10 Umgebungsvariablen Java 16
Windows 10 Umgebungsvariablen Java 16

Als Standardversion verwende ich die aktuelle Release-Version Java 16. Dementsprechend sollten folgende Einstellungen vorgenommen werden:

  • In der oberen Liste ("User variables") sollte es keinerlei Java-Einträge geben.
  • In der unteren Liste ("System variables") sollte ein Eintrag "JAVA_HOME = C:\Program Files\Java\jdk-16\" existieren (bitte die Versionsnummer prüfen, ggf. hast du eine neuere). Wenn dieser Eintrag nicht existiert, kann er mittels "New..." hinzugefügt werden. Wenn er existiert, aber auf ein anderes Verzeichnis zeigt, kann er mittels "Edit..." geändert werden.
  • Unter "Path" sollten die folgenden Einträge gelöscht werden:
    • C:\ProgramData\Oracle\Java\javapath
    • C:\Program Files (x86)\Common Files\Oracle\Java\javapath
  • Stattdessen sollte folgender Eintrag eingefügt werden:
    • %JAVA_HOME%\bin

Das sollte dann wie folgt aussehen:

Hinzufügen von "%JAVA_HOME%\bin" zur Systemvariable "Path"
Hinzufügen von "%JAVA_HOME%\bin" zur Systemvariable "Path"

Der letzte Eintrag sorgt dafür, dass Path und JAVA_HOME automatisch konsistent sind. Achtung: dies funktioniert nur für die an dieser Stelle hinterlegte Standardeinstellung. Ändert man JAVA_HOME über die Kommandozeile, muss man Path entsprechend anpassen (dazu unten mehr).

Öffne nun eine Kommandozeile, um die Einstellungen mit den folgenden Befehlen zu prüfen:

echo %JAVA_HOME%
java -version

Als Ergebnis solltest du folgendes sehen:

Prüfung der Java-Umgebungsvariablen
Prüfung der Java-Umgebungsvariablen

Scripte zum Wechsel der Java-Version

Schließlich kommen wir zur Möglichkeit die Java-Version schnell und einfach zu wechseln. Dazu lege ich bei mir für jede Java-Version ein separates Kommando an, in der Form java16, java15, java14, usw. Diese Kommandos lege ich in das Verzeichnis C:\Program Files\Java\scripts, welches ich – wie zuvor beschrieben – ebenfalls zur Umgebungsvariable "Path" hinzufüge:

 Hinzufügen von "C:\Program Files\Java\scripts" zur Systemvariable "Path"
Hinzufügen von "C:\Program Files\Java\scripts" zur Systemvariable "Path"

Die Dateien heißen java16.bat, java15.bat, java14.bat usw. und ändern – wie am Beispiel von java16.bat folgt – die Umgebungsvariablen:

@echo off
set JAVA_HOME=C:\Program Files\Java\jdk-16
set Path=%JAVA_HOME%\bin;%Path%
echo Java 16 activated.

Dieses zugegebenermaßen sehr einfach gehaltene Skript fügt das bin-Verzeichnis der zu aktivierenden Java-Version jeweils am Anfang der Path-Variable ein, sodass dieses als erstes nach bspw. der java.exe durchsucht wird. Die Path-Variable wird somit mit jedem Umschalten länger. Da dies aber nur die aktuell geöffnete Kommandozeile betrifft, halte ich das nicht für problematisch.

Das folgende RAR-File enthält alle meine Skripte von Java 1.2 bis Java 17 (ggf. müsst ihr das ein oder andere Java-Verzeichnis an eure Installation anpassen): scripts-up-to-jdk16.zip

Ob die Skripte funktionieren, könnt ihr ganz einfach in einer Kommandozeile testen. Achtung: nach dem Hinzufügen des scripts-Verzeichnisses zur Path-Variable muss eine neue Kommandozeile geöffnet werden.

Umschalten der Java-Version
Umschalten der Java-Version

Damit ist das Setup auch schon fertiggestellt. Ich hoffe, dieser Artikel war hilfreich für euch, und ich würde mich sehr über Kommentare freuen. Wenn dir der Artikel gefallen hat, freue ich mich, wenn Du ihn über einen der folgenden Share-Buttons teilst.

Free Bonus:

O-Notation Cheat Sheet

[7 Komplexitätsklassen auf einer Seite]

Du kannst dieses PDF als Referenz verwenden, um die sieben wichtigsten Zeitkomplexitätsklassen (mit Beschreibungen und Beispielen) schnell nachzuschlagen.

Du erhältst dieses PDF, wenn du dich für meinen Newsletter anmeldest.
Ich versende niemals Spam, und du kannst dich jederzeit wieder abmelden.
Invalid email address
Sven Woltmann
Über den Autor
Ich bin freiberuflicher Softwareentwickler mit über 20 Jahren Erfahrung in skalierbaren Java-Enterprise-Anwendungen. Mein Schwerpunkt liegt auf der Optimierung komplexer Algorithmen und auf fortgeschrittenen Themen wie Concurrency, dem Java Memory Model und Garbage Collection. Hier auf HappyCoders.eu möchte ich dir helfen, ein besserer Java-Programmierer zu werden. Lies mehr über mich hier.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

5 comments on “Umschalten zwischen mehreren Java-Versionen unter Windows (aktualisiert 03/2021 für Java 16)”

  1. Hallo Sven, danke für den Artikel.
    Leider funktionieren bei mir die Skripten nicht und folgende Fehlermeldung tritt auf, wenn ich z.B. den Befehl "java11" für das Umschalten auf java11 eingebe:

    C:\Users\XXX>java11
    Der Befehl "java11" ist entweder falsch geschrieben oder
    konnte nicht gefunden werden.

    Folgende Umgebungsvariablen hab ich bereits hinzufügt:
    JAVA_HOME --> C:\Program Files\Java\jdk-11.0.6
    %JAVA_HOME%\bin --> %JAVA_HOME%\bin

    Und den Pfad innerhalb des Skripts habe ich natürlich auch entsprechend meiner Java-Installation angepasst.

    Danke für die Hilfe im Voraus!

    LG Melanie

    1. Hallo Melanie, es sieht so aus, als hättest Du den Pfad zu den Skripten nicht zu Deiner "Path"-Systemvariable hinzugefügt. S. o. im Abschnitt "Scripte zum Wechsel der Java-Version".

      Oder ... Du hast noch einen alten Command Prompt auf? Dann musst Du einen neuen öffnen. Die Änderungen der Umgebungsvariablen sind nur in neu geöffneten Applikationen wirksam.

Die folgenden Artikel könnten dir auch gefallen