

In diesem Artikel zeige ich dir, wie du mehrere Java-Versionen unter Windows installierst und wie du die Java-Version auf der Kommandozeile und in der PowerShell ändern kannst:

Um diese Kommandos zum Wechsel der Java-Version auch auf deinem System zu ermöglichen, folge dieser einfachen Schritt-für-Schritt-Anleitung.
Los geht's…
Schritt 1: Installation mehrerer Java-Versionen
Mehrere Java-Versionen parallel zu installieren ist unter Windows kinderleicht. Du kannst einfach die Installer der einzelnen Versionen herunterladen und ausführen – jede Version wird dabei 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\
undC:\Program Files (x86)\JavaSoft\JRE\1.2\
installiert – ich empfehle das der Übersicht halber aufC:\Program Files (x86)\Java\jdk1.2.2\
undC:\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 aufC:\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 aufC:\Program Files (x86)\Java\jdk1.4.2_19\
zu ändern.
Ab den folgenden Versionen sollten die Standard-Installationsverzeichnisse beibehalten werden:
- Java SE 5
- Java SE 6
- Java SE 7
- Java SE 8
- Java SE 9 / OpenJDK 9
- Java SE 10 / OpenJDK 10 (→ Die wichtigsten neuen Features in Java 10)
Achtung – folgende Versionen dürfen in der Oracle-Distribution nur noch für private Zwecke und zur Entwicklung eingesetzt werden:
- Java SE 11 / OpenJDK 11 (→ Die wichtigsten neuen Features in Java 11)
- Java SE 12 / OpenJDK 12 (→ Die wichtigsten neuen Features in Java 12)
- Java SE 13 / OpenJDK 13 (→ Die wichtigsten neuen Features in Java 13)
- Java SE 14 / OpenJDK 14 (→ Die wichtigsten neuen Features in Java 14)
- Java SE 15 / OpenJDK 15 (→ Die wichtigsten neuen Features in Java 15)
- Java SE 16 / OpenJDK 16 (→ Die wichtigsten neuen Features in Java 16)
- Java SE 17 / OpenJDK 17 (→ Die wichtigsten neuen Features in Java 17)
- Java SE 18 / OpenJDK 18 (→ Die wichtigsten neuen Features in Java 18)
- Java SE 19 / OpenJDK 19 (→ Die wichtigsten neuen Features in Java 19)
- Java SE 20 / OpenJDK 20 (→ Die wichtigsten neuen Features in Java 20)
- Java SE 21 / OpenJDK 21 (→ Die wichtigsten neuen Features in Java 21)
- Java SE 22 / OpenJDK 22 (→ Die wichtigsten neuen Features in Java 22)
- Java SE 23 / OpenJDK 23 (→ Die wichtigsten neuen Features in Java 23)
Die folgende Version ist zum aktuellen Zeitpunkt ein Early Access Build und sollte nur zum Testen verwendet werden:
Schritt 2: Java-Umgebungsvariablen definieren
Welche Java-Version verwendet wird, entscheiden 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 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 Java-Umgebungsvariablen
Die Java-Installer 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:
An dieser Stelle kannst du einfach auf "Enter" drücken, um die Systemeigenschaften zu öffnen:
Klicke auf "Environment Variables..." und das folgende Fenster erscheint:

Als Standardversion empfehle ich die aktuelle Release-Version Java 23. 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-23" existieren. Wenn dieser Eintrag nicht existiert, kannst du ihn mittels "New..." hinzufügen. Wenn er existiert, aber auf ein anderes Verzeichnis zeigt, kannst du ihn mit "Edit..." ändern.
- Unter "Path" solltest du, falls vorhanden, die folgenden Einträge löschen (diese werden von den Installern der Uralt-Versionen gesetzt):
C:\ProgramData\Oracle\Java\javapath
C:\Program Files (x86)\Common Files\Oracle\Java\javapath
- Stattdessen solltest du folgenden Eintrag einfügen:
%JAVA_HOME%\bin
Der Eintrag sollte dann wie folgt aussehen (die übrigen Einträge der Liste werden bei dir wahrscheinlich anders aussehen, da du andere Anwendungen installiert hast als ich):
Der letzte Eintrag sorgt dafür, dass Path
und JAVA_HOME
automatisch konsistent sind.
Achtung: das funktioniert nur für die an dieser Stelle hinterlegte Standardeinstellung. Ändert man JAVA_HOME
über die Kommandozeile, muss man Path
entsprechend anpassen. Aber keine Sorge – das machen die Skripte, die du dir im nächsten Schritt herunteladen kannst, automatisch.
Java-Version prüfen unter Windows
Öffne nun eine Kommandozeile, um die Einstellungen mit den folgenden Befehlen zu prüfen:
echo %JAVA_HOME%
java -version
Code-Sprache: Klartext (plaintext)
Als Ergebnis solltest du folgendes sehen:
Schritt 3: Scripte zum Wechsel der Java-Version installieren
Um die Java-Version auf der Kommandozeile zu ändern, habe ich einige Batch-Dateien vorbereitet, die du dir auf dein System kopieren kannst. Hier schon einmal der Link (bis zur Early Access Version Java 23): scripts-up-to-java24.zip
Die ZIP-Datei enthält Skripte mit den Namen
java23.bat
,java22.bat
,java21.bat
, usw. für alle Java-Versionen,- die entsprechenden Dateien
java23.ps1
,java22.ps1
, usw. für die PowerShell, - sowie jeweils ein allgemeinens Skript
javaX.bat
bzw.javaX.ps1
.
Ich schlage dir vor, die Skripte in das Verzeichnis C:\Program Files\Java\scripts
zu entpacken.
Die Skripte sehen beispielsweise so aus:
java23.bat
:
@echo off
call javaX "Java 23" %1
Code-Sprache: DOS .bat (dos)
java23.ps1
:
javaX "Java 23" $args[0]
Code-Sprache: PowerShell (powershell)
javaX.bat
:
@echo off
if %1 == "Java 1.2" set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.2.2
if %1 == "Java 1.3" set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.3.1_28
...
if %1 == "Java 21" set JAVA_HOME=C:\Program Files\Java\jdk-21
if %1 == "Java 22" set JAVA_HOME=C:\Program Files\Java\jdk-22
if %1 == "Java 23" set JAVA_HOME=C:\Program Files\Java\jdk-23
if "%~2" == "perm" (
setx JAVA_HOME "%JAVA_HOME%" /M
)
set Path=%JAVA_HOME%\bin;%Path%
echo %~1 activated.
Code-Sprache: DOS .bat (dos)
javaX.ps1
:
param ($javaVersion, $perm)
switch ($javaVersion) {
"Java 1.2" { $env:JAVA_HOME = "C:\Program Files (x86)\Java\jdk1.2.2" }
"Java 1.3" { $env:JAVA_HOME = "C:\Program Files (x86)\Java\jdk1.3.1_28" }
...
"Java 21" { $env:JAVA_HOME = "C:\Program Files\Java\jdk-21" }
"Java 22" { $env:JAVA_HOME = "C:\Program Files\Java\jdk-22" }
"Java 23" { $env:JAVA_HOME = "C:\Program Files\Java\jdk-23" }
}
if ($perm -eq "perm") {
[Environment]::SetEnvironmentVariable("JAVA_HOME", $env:JAVA_HOME, [System.EnvironmentVariableTarget]::Machine)
}
$env:Path = $env:JAVA_HOME + '\bin;' + $env:Path
Write-Output "$javaVersion activated."
Code-Sprache: PowerShell (powershell)
In den Dateien javaX.bat
und javaX.ps1
musst Du vermutlich einige Pfade zu den installierten Java-Versionen anpassen.
Die Skripte aktualisieren die JAVA_HOME
-Umgebungsvariable und fügen das darin liegende bin
-Verzeichnis am Anfang der Path
-Variable ein. Dadurch wird dieses beim Aufruf von Java-Befehlen wie java
oder javac
als erstes nach der entsprechenden Executable durchsucht.
(Die Path
-Variable wird mit jedem Umschalten länger. Mach dir darüber keine Sorgen. Dies betrifft nur die aktuell geöffnete Kommandozeile.)
Schritt 4: Füge das Skript-Verzeichnis zum Pfad hinzu
Damit du die Skripte von überall aufrufen kannst, musst du das Verzeichnis zur "Path"-Umgebungsvariablen hinzuzufügen (genau wie du es im zweiten Schritt mit "%JAVA_HOME%\bin" gemacht hast):
Wenn Du von allen Java-Versionen die aktuellsten Releases installiert hast, solltest du die Skripte ohne weitere Anpassungen verwenden können. Öffne eine neue Kommandozeile oder PowerShell und gib z. B. die folgenden Kommandos ein:
Wenn eines der Kommandos nicht die erwartete Java-Version aktiviert, dann prüfe bitte, ob der Pfad in der javaX.bat
- bzw. javaX.ps1
-Datei dem Installationspfad der zu aktivierenden Java-Version entspricht.
Temporäre und permanente Änderungen der Java-Version
Die Kommandos wirken sich zunächst nur auf die aktuell geöffnete Kommandozeile oder PowerShell aus. Sobald du eine andere Kommandozeile/PowerShell öffnest, ist wieder die in Schritt 2 festgelegte Standard-Version aktiv (Java 23, wenn du nichts geändert hast).
Wenn du die Java-Version permanent ändern möchtest, füge zu dem entsprechenden Kommando einfach den Parameter "perm" hinzu, z. B.
java23 perm
Achtung: Um die Java-Version permanent zu setzen, musst du die Kommandozeile bzw. die PowerShell als Administrator öffnen. Ansonsten bekommst du die Fehlermeldung "ERROR: Access to the registry path is denied."
Was du als nächstes tun solltest…
Ich hoffe, dass du der Anleitung gut folgen konntest und dass die Kommandos bei dir funktionieren.
Jetzt würde ich gerne von dir hören:
Konntest du den Schritten gut folgen – oder hast du noch offene Fragen?
So oder so, lass es mich wissen, indem du unten einen Kommentar hinterlässt.