2016-10-18 6 views
1

ich zwischen Java 7 und Java 8 unter Windows 10.Schalter Java-Version auf Win10 - Ausgabe auf Registertaste

Ich habe beide installiert wechseln müssen:

C:\Program Files\Java\jre1.8.0_91 
C:\Program Files\Java\jre7 

In meinem PATH ein generisch Pfad (der Links zu ausführbaren Java-Dateien enthält). Dies ist der einzige Java-Wert in allen eviroment Variablen:

Path=C:\ProgramData\Oracle\Java\javapath;.. 

Wenn ich Java ausgeführt werden soll 8, ich erstelle 3 echte Links zu C:\Program Files\Java\jre1.8.0_91 (mit dem Befehl mklink /H [link] [origin]):

C:\ProgramData\Oracle\Java\javapath\java.exe >> C:\Program Files\Java\jre1.8.0_91\bin\javapath\java.exe 
C:\ProgramData\Oracle\Java\javapath\javaw.exe >> C:\Program Files\Java\jre1.8.0_91\bin\javapath\javaw.exe 
C:\ProgramData\Oracle\Java\javapath\javaws.exe >> C:\Program Files\Java\jre1.8.0_91\bin\javapath\javaws.exe 

Mit dieser Konfiguration es funktioniert.

Aber, wenn ich 7 Java ausgeführt werden soll, schaffe ich drei echte Links zu C:\Program Files\Java\jre7:

C:\ProgramData\Oracle\Java\javapath\java.exe >> C:\Program Files\Java\jre7\bin\javapath\java.exe 
C:\ProgramData\Oracle\Java\javapath\javaw.exe >> C:\Program Files\Java\jre7\bin\javapath\javaw.exe 
C:\ProgramData\Oracle\Java\javapath\javaws.exe >> C:\Program Files\Java\jre7\bin\javapath\javaws.exe 

Wenn ich versuche, Java zu laufen, es funktioniert nicht! bekomme ich folgende Fehlermeldung:

Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion' 
has value '1.8', but '1.7' is required. 
Error: could not find java.dll Error: Could not find Java SE Runtime Environment. 

Es gibt eine Abhilfe, aber ich es nicht viel. Ich kann 7 mit Java arbeitet nur auf diese Weise:

  1. entfernen C:\ProgramData\Oracle\Java\javapath; aus% PATH%
  2. C:\Program Files\Java\jre7\bin; zu% PATH% In

Ich mag es nicht, diese Lösung, weil es anders als das ist vorherige Konfiguration, und weil ich immer den Wert von PATH manuell entfernen muss.

+0

Ist es nur ein Kopier-und-Einfügen-Problem oder haben Sie wirklich eine Verknüpfung zu dem nicht vorhandenen .. \ jre7 \ bin \ ** javapath ** \ java.exe? –

+0

Dies ist der vollständige Befehl, und es funktioniert: 'mklink /HC:\ProgramData\Oracle\Java\javapath\java.exe" C: \ Programme \ Java \ jre7 \ bin \ java.exe "' – Radioleao

+0

Das Problem ist dass java.exe zuerst versucht, sein JRE-Verzeichnis zu finden, indem er sieht, ob es dort angefangen hat. Da das Verzeichnis javapath das JRE nicht enthält, sucht es in der Registrierung danach und findet das falsche. Wenn Sie das Verzeichnis JRE7 \ bin zum Pfad hinzufügen, wird java.exe es finden. Sie müssen das Verzeichnis javapath nicht entfernen. Stellen Sie nur sicher, dass jre7 \ bin zuerst kommt, z. 'Pfad% Programmdateien% \ Java \ jre7 \ bin;% Pfad%' wird ausreichen. –

Antwort

2

Es wäre schön zu wissen, was Oracle empfohlen wird, konnte aber diese Informationen nicht finden. Das folgende könnte eine vernünftige Hack Workaround sein (Ich habe eine ähnliche Methode in der Vergangenheit verwendet).

Erstellen Sie eine Kreuzung (oder einen symbolischen Link):

mklink /j "C:\Program Files\Java\jre" "C:\Program Files\Java\jre1.8.0_102" 

Dann C:\ProgramData\Oracle\Java\javapath von Ihrem PATH entfernen und durch C:\Program Files\Java\jre\bin ersetzen.

Nun, wenn Sie zu Java 7 wechseln möchten, gehen Sie einfach:

rd "C:\Program Files\Java\jre" 
mklink /j "C:\Program Files\Java\jre" "C:\Program Files\Java\jre7" 

Dies funktioniert, weil, wenn Sie jetzt java geben, wird es finden es (von der PATH) in C:\Program Files\Java\jre\bin\java.exe. Die ausführbare Datei weiß, in welchem ​​Verzeichnis sie sich befindet, und sucht dort nach den anderen Dateien (Dateien, DLLs usw.). Da jre jetzt ein Alias ​​für jre7 ist, wird es die richtigen finden. Und weil es sie findet, sieht es nicht in der Registrierung aus.

Sie können natürlich eine Stapeldatei oder ein Verknüpfungssymbol mit dem Befehl zum Wechseln zwischen den beiden Versionen erstellen.

+0

Der Unterschied zwischen Ihrer und meiner Konfiguration besteht darin, dass Sie einen 'mklink/J' für einen Ordner erstellen und einen' milink/H' für ausführbare Dateien erstellen. Leider hat Ihre Lösung den gleichen Fehler beim Registrierungsschlüssel. Das Gleiche gilt für 'mklink/H' in einem Ordner. Ich weiß nicht warum, aber der echte Ordner im PATH anstelle eines Links macht alle Unterschiede. – Radioleao

+0

@Radioleao 'mklink/h' funktioniert nicht auf Ordnern afaik, Sie müssten' mklink/d' verwenden. Vielleicht möchten Sie das ausprobieren. –

+0

Ich habe versucht, die 4 Konfigurationen: Hard Link auf Dateien - Hardlink auf Ordner - Symlink auf Dateien - Symlink auf Ordner. – Radioleao

0

Ich bin nicht 100% aber ich glaube, dass Sie die Variable JAVA_HOME möglicherweise auf die Version festlegen müssen, die Sie auch verwenden möchten.

+0

Bis heute hat es immer ohne JAVA_HOME funktioniert, kann es alt sein? Jedenfalls habe ich versucht ** SET JAVA_HOME = C: \ Programme \ Java \ jre7 ** und nichts geändert. – Radioleao

+0

Entschuldigung, ich hätte genauer hinsehen sollen. JAVA_HOME ist für JDK. JRE_HOME gilt für die JRE – josh

+0

No Chages. Aber mit einem weiteren Problem funktionierte es, wenn ich den Wert der Umgebungsvariablen% PATH% ändere, aber das ist nicht die beste Lösung. Ich werde meine Anfrage aktualisieren. – Radioleao

Verwandte Themen