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

Java-Version ändern unter Windows (aktualisiert 2021 für Java 16)

von Sven Woltmann – 16. März 2021

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

Mehrere Java-Versionen unter Windows

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\ 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 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:

Windows-Umgebungsvariablen öffnen
Windows-Umgebungsvariablen öffnen

An dieser Stelle kannst du einfach auf "Enter" drücken, um die Systemeigenschaften zu öffnen:

Windows 10 Systemeigenschaften
Windows 10 Systemeigenschaften

Klicke auf "Environment Variables..." und das folgende Fenster erscheint:

Windows 10 Umgebungsvariablen Java 16
Windows 10 Umgebungsvariablen Java 16

Als Standardversion empfehle ich die aktuelle Release-Version Java 16.0.2. 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.0.2" 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 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):

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: 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

Als Ergebnis solltest du folgendes sehen:

Java-Version prüfen unter Windows
Java-Version prüfen unter Windows

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: scripts-up-to-java17ea.zip

Die ZIP-Datei enthält Skripte mit den Namen java17.bat, java16.bat, java15.bat, usw. für alle Java-Versionen. Ich schlage dir vor die Skripte in das Verzeichnis C:\Program Files\Java\scripts zu entpacken.

Die Skripte sehen beispielsweise so aus (java16.bat):

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

Das Skript aktualisiert die JAVA_HOME-Umgebungsvariable und fügt 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):

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

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 und geben z. B. die folgenden Kommandos ein:

Umschalten der Java-Version
Umschalten der Java-Version

Wenn eines der Kommandos nicht die erwartete Java-Version aktiviert, dann prüfe bitte, ob der Pfad in der entsprechenden Batch-Datei dem Installationspfad der zu aktivierenden Java-Version entspricht.

Temporäre, permanente und systemweite Änderungen der Java-Version

Die Kommandos, die ich dir bis hierhin vorgestellt habe, wirken sich nur auf die aktuell geöffnete Kommandozeile aus. Sobald du eine andere Kommandozeile öffnest, ist wieder die in Schritt 2 festgelegte Standard-Version aktiv (Java 16, wenn du nichts geändert hast).

Deshalb gibt es für jede Java-Version nicht nur ein, sondern drei Skripte:

  • java<version>: Aktiviert die Java-Version in der aktuellen Kommandozeile
  • java<version>-user: Setzt die Java-Version als Standardversion für deinen User-Account
  • java<version>-system: Setzt die Java-Version als Standardversion für das gesamte System

Die -user-Varianten der Skripte setzt die JAVA_HOME-Umgebungsvariable zusätzlich mit dem setx-Kommando, wodurch die Änderung permanent in die Registry geschrieben wird:

@echo off
set JAVA_HOME=C:\Program Files\Java\jdk-16.0.2
setx JAVA_HOME "%JAVA_HOME%"
set Path=%JAVA_HOME%\bin;%Path%
echo Java 16 activated as user default.

In den -system-Varianten wird bei dem setx-Kommando zusätzlich der /M-Parameter angegeben. Dadurch wird die systemweite Umgebungsvariable gesetzt und nicht die User-spezifische:

@echo off
set JAVA_HOME=C:\Program Files\Java\jdk-16.0.2
setx JAVA_HOME "%JAVA_HOME%" /M
set Path=%JAVA_HOME%\bin;%Path%
echo Java 16 activated as system-wide default.

Achtung: Um die systemweite Java-Version zu setzen, musst du die Kommandozeile 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.

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 “Java-Version ändern unter Windows (aktualisiert 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. Schau dazu noch einmal in "Schritt 4: Füge das Skript-Verzeichnis zum Pfad hinzu".

      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 Fenstern wirksam.

Die folgenden Artikel könnten dir auch gefallen