Warum wird Java 8 unter Windows 8 ausgeführt, obwohl die Umgebungsvariable path auf Java 7 verweist?

0

Ich habe meine pathUmgebungsvariable so eingestellt, dass sie meinen Java 7-Bin-Ordner enthält ( C:\Program Files\Java\jdk1.7.0_55). Durch das Drucken der pathVariablen auf der Konsole wird in der Tat bestätigt, dass sich keine anderen Java\binOrdner darin befinden.

Wenn ich dennoch den Befehl ausführe, sieht java -versionder Ausdruck folgendermaßen aus:

java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)

Neben Java 7 habe ich auch Java 6 und Java 8 installiert. Bei allen Installationen handelt es sich um JDKs, auf denen auch separate JREs installiert sind.

Warum wird in diesem Fall Java 8 ausgeführt und nicht Java 7 (sowohl von der altmodischen Eingabeaufforderung als auch von Powershell)?

Kallja
quelle
Was passiert, wenn Sie das Verzeichnis in "C: \ Programme \ Java \ jdk1.7.0_55 \ bin" ändern und dann "java -version" ausführen? Möglicherweise wurde Ihr alter Java durch die neue Version überschrieben.
drk.com.ar
@ drk.com.ar Wenn Sie eine CD in das Verzeichnis '<JDK7> \ bin' einlegen und die Java-Version ausführen, wird wie erwartet die Java-Version "1.7.0_55" ausgegeben. Ich vermute, dass es etwas anderes als PATH gibt, das dem Befehlsprozessor mitteilt, von wo aus er etwas ausführen soll. Vielleicht etwas in der Registrierung.
Kallja
Das glaube ich wirklich nicht. Die Konsolen-Shell muss die Systemvariable PATH berücksichtigen, damit eine ausführbare Datei gefunden werden kann. Versuchen Sie, "C: \ Programme \ Java \ jdk1.7.0_55 \ bin" als ersten Pfad in die Variable aufzunehmen. Stellen Sie sicher, dass es der erste ist, indem Sie den PFAD in die Konsole drucken und es erneut versuchen. Wenn du das nicht schon getan hast. Berücksichtigen Sie, dass die Variable PATH eine Verschmelzung zwischen Benutzer- und Systemkonfiguration darstellt.
drk.com.ar
@ drk.com.ar Das Hinzufügen des gewünschten Java-Verzeichnisses als ersten Pfadeintrag hat geholfen. Stellen Sie das als Antwort und ich werde es akzeptieren. Eine genauere Untersuchung des Problems ergab, dass das Java 8-Installationsprogramm eine java.exe-Datei im Verzeichnis <windir> \ system32 ablegt, die standardmäßig in der Umgebungsvariablen path enthalten ist. Ich hatte das Java-Verzeichnis als Benutzerumgebungsvariable, die von den systemweiten Variablen überschrieben wurde, da sie als erste und erst danach als benutzerspezifische Variablen betrachtet werden.
Kallja
Erledigt. Die Tatsache, dass das Java 8-Installationsprogramm die ausführbare Java-Datei in das Systemverzeichnis kopiert hat, ist ein schwerwiegender Verstoß gegen die guten Praktiken eines jeden Installationsprogramms.
drk.com.ar

Antworten:

1

Die Konsolen-Shell muss die Systemvariable PATH berücksichtigen, damit eine ausführbare Datei gefunden werden kann. Versuchen Sie, "C: \ Programme \ Java \ jdk1.7.0_55 \ bin" als ersten Pfad in die Variable aufzunehmen. Stellen Sie sicher, dass es der erste ist, indem Sie den PFAD in die Konsole drucken und es erneut versuchen. Wenn du das nicht schon getan hast. Berücksichtigen Sie, dass die Variable PATH eine Verschmelzung zwischen Benutzer- und Systemkonfiguration darstellt.

drk.com.ar
quelle