Das Ausführen von Java über eine Junction für den Ordner der ausführbaren Datei funktioniert nicht

Das Ausführen von Java über eine Junction für den Ordner der ausführbaren Datei funktioniert nicht

Ich habe gerade ein Upgrade von Java Version 8 auf Version 12 durchgeführt. Das Betriebssystem ist Windows 7 Home.

Da Oracle kein separates JRE mehr bereitstellt, muss ich beim Ausführen eines Programms den Ordnernamen für die ausführbare Java-Datei angeben. Um das Ändern des Ordners bei einer Java-Aktualisierung zu vereinfachen, habe ich eine Verknüpfung in einen meiner Ordner eingefügt und diese zu meinem PATH hinzugefügt. Aber das funktioniert nicht. Hier ist eine leicht bearbeitete Befehlszeilensitzung.

Überprüfen Sie zunächst, ob die Abzweigung und der Weg in Ordnung sind:

D:\Peter\PC>dir jre*

27/09/2019  15:11    <JUNCTION>     JREDir [C:\Program Files\Javajdk-12.0.1\bin]

D:\Peter\PC>dir jredir\java*
 Volume in drive D is DATA
 Volume Serial Number is CE44-C814

 Directory of D:\Peter\PC\jredir

27/09/2019  11:36           148,328 java.dll
27/09/2019  11:36            51,048 java.exe
27/09/2019  11:36           226,664 javaaccessbridge.dll
27/09/2019  11:36            20,840 javac.exe
27/09/2019  11:36            20,840 javadoc.exe
27/09/2019  11:36           174,952 javajpeg.dll
27/09/2019  11:36            20,840 javap.exe
27/09/2019  11:36            51,048 javaw.exe
               8 File(s)        714,560 bytes
               0 Dir(s)  149,081,808,896 bytes free
C:\>path
PATH=C:\Program Files (x86)...ls\Binn\;D:\Peter\PC\JREDir

Versuchen Sie nun, Java mit dem Junction-Namen auszuführen

D:\Peter\PC>jredir\java -version
Error: opening registry key 'Software\JavaSoft\JRE'
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment.

Dies scheint die ausführbare Java-Datei zu finden, erfordert aber einen Registrierungsschlüssel. Ein Wechsel per CD in das Verzeichnis der ausführbaren Datei funktioniert jedoch einwandfrei!

C:\Program Files\Java\jdk-12.0.1\bin>java -version
Picked up _JAVA_OPTIONS: -Djava.net.preferIPv4Stack=true
java version "12.0.1" 2019-04-16
Java(TM) SE Runtime Environment (build 12.0.1+12)
Java HotSpot(TM) 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)

ebenso wie das Ausführen mit einem expliziten Verzeichnisnamen:

D:\Peter\PC>"C:\Program Files\Java\jdk-12.0.1\bin"\java -version
Picked up _JAVA_OPTIONS: -Djava.net.preferIPv4Stack=true
java version "12.0.1" 2019-04-16
Java(TM) SE Runtime Environment (build 12.0.1+12)
Java HotSpot(TM) 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)

Das Ausführen über den Pfad funktioniert jedoch nicht.

C:\>java -version
Error: opening registry key 'Software\JavaSoft\JRE'
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment.

Ich habe also zwei Fragen:

  1. Warum funktioniert die Verbindung nicht? Ich habe es mit einem symbolischen Link versucht, aber das hat auch nicht funktioniert.
  2. Was muss in der Registrierung stehen, damit es funktioniert?

Antwort1

Ich weiß, dass es eine alte Frage ist, aber ich teile sie zum späteren Nachschlagen.

Im Beispiel ist die Verbindung eine Ebene zu tief. Das sollte sie nicht sein, C:\Program Files\Javajdk-12.0.1\binsondernC:\Program Files\Javajdk-12.0.1

verwandte Informationen