Wir müssen zwischen den beiden Umgebungsvariablen unterscheiden, die hier austauschbar diskutiert werden. Eine davon ist die Variable JAVA_HOME . Die andere ist die Pfadvariable . Jeder Prozess, der auf die Variable JAVA_HOME verweist, sucht nach dem Suchpfad zum JDK, nicht zur JRE. Die Verwendung der Variablen JAVA_HOME ist nicht für den Java-Compiler selbst vorgesehen. Der Compiler kennt seinen eigenen Speicherort. Die Variable ist für andere Software gedacht, um den Compiler leichter zu finden. Diese Variable wird normalerweise von der IDE-Software verwendet, um Anwendungen aus Java-Quellcode zu kompilieren und zu erstellen. Im Gegensatz dazu verweisen der Windows CMD-Interpreter und viele andere Software von Erst- und Drittanbietern auf die Variable Path und nicht auf die Variable JAVA_HOME.
Anwendungsfall 1: Kompilieren aus CMD
Wenn Sie beispielsweise keine IDE-Software verwenden und nur unabhängig von Ihrem aktuellen Arbeitsverzeichnis aus dem CMD kompilieren möchten, müssen Sie die Pfadvariable korrekt festlegen. In Ihrem Fall benötigen Sie nicht einmal die Variable JAVA_HOME. Da CMD Path verwendet, nicht JAVA_HOME, um den Java-Compiler zu finden.
Anwendungsfall 2: Kompilieren aus IDE
Wenn Sie jedoch eine IDE-Software verwenden, müssen Sie sich zunächst die Dokumentation ansehen. Möglicherweise muss JAVA_HOME festgelegt werden, es kann jedoch auch ein anderer Variablenname für denselben Zweck verwendet werden. Der De-facto-Standard im Laufe der Jahre war JAVA_HOME, aber dies ist möglicherweise nicht immer der Fall.
Anwendungsfall 3: Kompilieren aus IDE und CMD
Wenn Sie zusätzlich zur IDE-Software unabhängig von Ihrem aktuellen Arbeitsverzeichnis auch aus der CMD kompilieren möchten, müssen Sie möglicherweise zusätzlich zur Variablen JAVA_HOME auch den JDK-Suchpfad an die Variable Path anhängen.
JAVA_HOME vs. Pfad
Wenn Ihr Problem mit dem Kompilieren von Java zusammenhängt, möchten Sie die Variable JAVA_HOME und den Pfad (falls zutreffend) überprüfen. Wenn Ihr Problem mit der Ausführung von Java-Anwendungen zusammenhängt, möchten Sie Ihre Pfadvariable überprüfen.
Die Pfadvariable wird universell für alle Betriebssysteme verwendet. Da es vom System definiert wird und die Standardvariable zum Auffinden der JRE verwendet wird, gibt es fast nie Probleme beim Ausführen von Java-Anwendungen. Besonders nicht unter Windows, wo die Software-Installer normalerweise alles für Sie einrichten. Wenn Sie jedoch manuell installieren, ist es möglicherweise am sichersten, die Variable JAVA_HOME insgesamt zu überspringen und die Variable Path für alles zu verwenden, sowohl für JDK als auch für JRE. Jede neuere Version einer IDE-Software sollte in der Lage sein, diese aufzunehmen und zu verwenden.
Symlinks
Symbolische Links bieten möglicherweise eine weitere Möglichkeit, auf den JDK-Suchpfad zu verweisen, indem eine der vorhandenen Umgebungsvariablen huckepack genommen wird.
Ich bin mir bei früheren Versionen von Oracle / Sun JDK / JRE-Versionen nicht sicher, aber zumindest das Installationsprogramm für jdk1.8.0_74 hängt den Suchpfad C:\ProgramData\Oracle\Java\javapath
an die Pfadvariable an und setzt ihn an den Anfang des Zeichenfolgenwerts. Dieses Verzeichnis enthält symbolische Links zu java.exe, javaw.exe und javaws.exe im JRE-Verzeichnis.
Zumindest mit dem Java 8 JDK und vermutlich dem Java 8 JRE Standalone muss für die JRE keine Konfiguration der Umgebungsvariablen vorgenommen werden. Solange Sie das Installationspaket zum Einrichten verwenden. Es kann jedoch Unterschiede bei Ihrer Windows-Installation geben. Beachten Sie, dass die Oracle-JRE im Lieferumfang des JDK enthalten ist.
Wenn Sie jemals feststellen, dass Ihre Java JDK-Konfiguration die falsche Version des Compilers verwendet oder auf magische Weise funktioniert, ohne dies explizit zu definieren (ohne den Zauber zu wirken), haben Sie möglicherweise irgendwo in Ihren Umgebungsvariablen einen Symlink . Vielleicht möchten Sie nach Symlink suchen.