Wie Sie erwähnt, JAVA_HOME verweist auf die JDK-Installationspfad durch die Variable Umwelt gegeben (% JAVA_HOME%).
Aber java.home verweist auf die JRE installation path, jetzt gibt es die JRE, die verwendet wurde, die Anwendung auszuführen, denken Sie bitte daran, dass Sie mehrere Versionen von JRE und JDK auf dem gleichen Server/Computer haben, können
Und Sie können eine Anwendung ausführen, die angibt, welche jre oder jdk Sie verwenden möchten.
So zum Beispiel, wenn Sie auf Ihre Umgebung Pfad haben:
%JAVA_HOME% = C:\Program Files\Java\jdk1.6.0_24
Aber wenn Sie die Anwendung lief eine spezifische jre mit:
"C:\Program Files (x86)\Java\jre1.8.0_73\bin\java" -jar TheJavaFile.jar
Innerhalb der Anwendung auf Laufzeit, Sie werden auf java.home eine andere Version des JAVA_HOME
bekommen Dies kann erklären, warum in einigen Fällen erhalten Sie verschiedene Versionen für Variable und Systemeigenschaft.
Beachten Sie auch, bitte, dass die Wege recht unterschiedlich sein können, da JRE ein anderes Produkt als JDK ist, dann werden sie an verschiedenen Orten installiert, weil sie
nun unabhängig sind, in Bezug auf was ist der Unterschied von ein JDK vs JRE, erklärt dieses Diagramm es ziemlich klar:
JDK ein Superset von JRE ist, und enthält alles, was in JRE ist, zuzüglich Werkzeuge wie die Compiler und Debugger notwendig für die Entwicklung von Applets und Anwendungen. JRE stellt die Bibliotheken, die Java Virtual Machine (JVM) und andere Komponenten zum Ausführen von Applets und Anwendungen bereit, die in der Programmiersprache Java geschrieben sind.
Kurz und auf den Punkt. Dies sollte als Antwort markiert werden. – Jay
Es scheint, dass die Frage selbst diese Antwort hat: JAVA_HOME = jdk-Installationspfad und java.home = jre-Installationspfad ... daher scheint die Frage, die hier beantwortet werden muss: Warum jre Pfad nicht in jdk-Pfad passen kann ? in der die Antwort so einfach sein könnte wie "Sie sind verschiedene und unabhängige Produkte, daher teilen sie nicht notwendigerweise den gleichen Weg" –
@MarcoVargas - Sie haben Recht. Aber meine Frage war - jdk = C:/Programme/Java/jdk1.8.0_112 und warum kann dann nicht C:/Programme/Java/jdk1.8.0_112/jre sein? – yogsma