it-swarm.com.de

javac wird nicht als interner oder externer Befehl, ausführbares Programm oder Batch-Datei erkannt

Beim Versuch, Java Programme zu kompilieren, ist ein Fehler aufgetreten.

Ich arbeite unter Windows (dies ist ein Windows-spezifisches Problem) und habe das neueste JDK installiert.

Ich habe versucht, eine Lösung mit der Variablen PATH zu finden, aber der Fehler bleibt bestehen.

Konsolenausgabe:

C:\>set path=C:Program Files (x86)\Java\jdk1.7.0\bin
C:\>javac Hello.Java
'javac' is not recognized as an internal or external command,
operable program or batch file.
236
user987137

TL; DR

Für erfahrene Leser:

  1. Suchen Sie den Pfad Java. es sieht so aus: _C:\Program Files\Java\jdkxxxx\bin\_
  2. Suche im Startmenü nach "Umgebungsvariable", um den Optionsdialog zu öffnen.
  3. Untersuche PATH. Entfernen Sie alte Java Pfade.
  4. Fügen Sie den neuen Pfad Java zu PATH hinzu.
  5. Bearbeiten Sie _Java_HOME_.
  6. Schließen Sie die Konsole/IDE und öffnen Sie sie erneut.

Herzlich willkommen!

Bei Java Anfängern ist eines der bekanntesten technischen Probleme aufgetreten: die Fehlermeldung _'xyz' is not recognized as an internal or external command..._.

Kurz gesagt, Sie haben Java nicht richtig installiert. Das Abschließen der Installation von Java unter Windows erfordert einige manuelle Schritte. Sie müssen diese Schritte immer nach der Installation von Java ausführen, auch nach dem Upgrade des JDK.

Umgebungsvariablen und PATH

(Wenn Sie dies bereits verstehen, können Sie die nächsten drei Abschnitte überspringen.)

Wenn Sie _javac HelloWorld.Java_ ausführen, muss cmd ermitteln, wo sich _javac.exe_ befindet. Dies wird mit der Umgebungsvariablen PATH erreicht.

Eine - Umgebungsvariable ist ein spezielles Schlüssel-Wert-Paar (z. B. _windir=C:\WINDOWS_). Die meisten wurden mit dem Betriebssystem geliefert, und einige sind für die ordnungsgemäße Funktion des Systems erforderlich. Eine Liste von ihnen wird beim Start an jedes Programm (einschließlich cmd) übergeben. nter Windows gibt es zwei Typen : Benutzerumgebungsvariablen und Systemumgebungsvariablen .

Sie können Ihre Umgebungsvariablen folgendermaßen anzeigen:

_C:\>set
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\craig\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
...
_

Die wichtigste Variable ist PATH . Es ist eine Liste von Pfaden, die durch _;_ getrennt sind. Wenn ein Befehl in cmd eingegeben wird, wird jedes Verzeichnis in der Liste nach einer passenden ausführbaren Datei durchsucht.

Auf meinem Computer ist PATH:

_C:\>echo %PATH%
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPower
Shell\v1.0\;C:\ProgramData\Microsoft\Windows\Start Menu\Programs;C:\Users\craig\AppData\
Roaming\Microsoft\Windows\Start Menu\Programs;C:\msys64\usr\bin;C:\msys64\mingw64\bin;C:\
msys64\mingw32\bin;C:\Program Files\nodejs\;C:\Program Files (x86)\Yarn\bin\;C:\Users\
craig\AppData\Local\Yarn\bin;C:\Program Files\Java\jdk-10.0.2\bin;C:\ProgramFiles\Git\cmd;
C:\Program Files\Oracle\VirtualBox;C:\Program Files\7-Zip\;C:\Program Files\PuTTY\;C:\
Program Files\launch4j;C:\Program Files (x86)\NSIS\Bin;C:\Program Files (x86)\Common Files
\Adobe\AGL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program
Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\iCLS Client\;
C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files
(x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\iCLS
Client\;C:\Users\craig\AppData\Local\Microsoft\WindowsApps
_

Wenn Sie _javac HelloWorld.Java_ ausführen, durchsucht cmd bei der Feststellung, dass javac kein interner Befehl ist, das System PATH, gefolgt vom Benutzer PATH . Es wird mechanisch in jedes Verzeichnis in der Liste eingetragen und überprüft, ob _javac.com_, _javac.exe_, _javac.bat_ usw. vorhanden ist. Wenn javac gefunden wird, wird es ausgeführt. Wenn dies nicht der Fall ist, wird _'javac' is not recognized as an internal or external command, operable program or batch file._ gedruckt.

Sie müssen das Verzeichnis Java executables zu PATH hinzufügen.

JDK vs. JRE

(Wenn Sie dies bereits verstehen, können Sie diesen Abschnitt überspringen.)

Beim Herunterladen von Java haben Sie die Wahl zwischen:

  • Die Java Runtime Environment (JRE), die die notwendigen Werkzeuge enthält, um Java Programme auszuführen, aber nicht um neue zu kompilieren - es enthält Java aber nicht javac.
  • Das Java Development Kit (JDK), das sowohl Java als auch javac enthält, sowie eine Reihe weiterer Entwicklungstools. Das JDK ist eine Obermenge des JRE.

Sie müssen sicherstellen, dass Sie haben das JDK installiert. Wenn Sie nur die JRE installiert haben, können Sie javac nicht ausführen, da Sie keine Installation des Compilers Java auf Ihrer Festplatte haben. Überprüfen Sie die Windows-Programmliste und stellen Sie sicher, dass der Name des Pakets Java die Wörter "Development Kit" enthält.

Verwenden Sie nicht set

(Wenn Sie es sowieso nicht geplant haben, können Sie diesen Abschnitt überspringen.)

Einige andere Antworten empfehlen die Ausführung einer Variation von:

_C:\>:: DON'T DO THIS
C:\>set PATH=C:\Program Files\Java\jdk1.7.0_09\bin
_

TU das nicht. Es gibt mehrere Hauptprobleme mit diesem Befehl:

  1. Dieser Befehl löscht alles andere aus PATH und ersetzt ihn durch den Java -Pfad. Nach dem Ausführen dieses Befehls finden Sie möglicherweise verschiedene andere Befehle, die nicht funktionieren.
  2. Ihr Java Pfad ist wahrscheinlich nicht ​​_C:\Program Files\Java\jdk1.7.0_09\bin_ - Sie haben mit ziemlicher Sicherheit eine neuere Version des JDK, die einen anderen Pfad haben würde.
  3. Das neue PATHgilt nur für die aktuelle cmd-Sitzung. Sie müssen den Befehl set jedes Mal neu eingeben, wenn Sie die Eingabeaufforderung öffnen.

Die Punkte 1 und 2 können mit dieser etwas besseren Version gelöst werden:

_C:\>:: DON'T DO THIS EITHER
C:\>set PATH=C:\Program Files\Java\<enter the correct Java folder here>\bin;%PATH%
_

Aber im Allgemeinen ist es nur eine schlechte Idee.

Suchen Sie den Pfad Java

Der richtige Weg beginnt damit, herauszufinden, wo Sie Java installiert haben. Dies hängt davon ab, wie wie Sie Java installiert haben.

Exe Installer

Sie haben Java installiert, indem Sie ein Setup-Programm ausgeführt haben. Das Oracle-Installationsprogramm platziert Versionen von Java unter _C:\Program Files\Java\_ (oder C:\Program Files (x86)\Java\). Navigieren Sie mit dem Datei-Explorer oder der Eingabeaufforderung zu diesem Verzeichnis.

Jeder Unterordner repräsentiert eine Java-Version. Wenn es nur einen gibt, haben Sie ihn gefunden. Andernfalls wählen Sie die Version, die der neueren Version ähnelt. Stellen Sie sicher, dass der Ordnername mit jdk beginnt (im Gegensatz zu jre). Geben Sie das Verzeichnis ein.

Geben Sie dann das Verzeichnis bin ein.

Sie befinden sich jetzt im richtigen Verzeichnis. Kopieren Sie den Pfad. Klicken Sie im Datei-Explorer auf die Adressleiste. Wenn in der Eingabeaufforderung Kopie die Eingabeaufforderung.

Der resultierende Pfad Java sollte die Form (ohne Anführungszeichen) haben:

_C:\Program Files\Java\jdkxxxx\bin\
_

Zip-Datei

Sie haben eine .Zip-Datei mit dem JDK heruntergeladen. Extrahieren Sie es an eine beliebige Stelle, an der es Ihnen nicht im Weg steht. _C:\Java\_ ist eine akzeptable Wahl.

Suchen Sie dann den Ordner bin irgendwo darin.

Sie befinden sich jetzt im richtigen Verzeichnis. Kopieren Sie den Pfad. Dies ist der Pfad Java.

Denken Sie daran, den Ordner niemals zu verschieben, da dies den Pfad ungültig machen würde.

Öffnen Sie den Einstellungsdialog

Das ist der Dialog zum Bearbeiten von PATH. Es gibt verschiedene Möglichkeiten, um zu diesem Dialogfeld zu gelangen, abhängig von Ihrer Windows-Version, den Einstellungen der Benutzeroberfläche und der Störung Ihrer Systemkonfiguration.

Probieren Sie einige davon aus:

  • Suchfeld Startmenü/Taskleiste "Suche nach" Umgebungsvariable "
  • Win + R "_control sysdm.cpl,,3_
  • Win + R "_SystemPropertiesAdvanced.exe_" Umgebungsvariablen
  • Datei-Explorer "In Adressleiste eingeben _Control Panel\System and Security\System_" Erweiterte Systemeinstellungen (ganz links in der Seitenleiste) "Umgebungsvariablen
  • Desktop "Rechtsklick auf diesen PC" Eigenschaften "Erweiterte Systemeinstellungen" Umgebungsvariablen
  • Startmenü "Rechtsklick auf Computer" Eigenschaften "Erweiterte Systemeinstellungen" Umgebungsvariablen
  • Systemsteuerung (Symbolmodus) "System" Erweiterte Systemeinstellungen "Umgebungsvariablen
  • Systemsteuerung (Kategoriemodus) "System und Sicherheit" System "Erweiterte Systemeinstellungen" Umgebungsvariablen
  • Desktop "Rechtsklick auf Arbeitsplatz" Erweitert "Umgebungsvariablen
  • Systemsteuerung "System" Erweitert "Umgebungsvariablen

Alle diese Optionen sollten Sie zum richtigen Einstellungsdialog führen.

Wenn Sie Windows 10 verwenden, hat Microsoft Sie mit einem ausgefallene neue Benutzeroberfläche gesegnet, um PATH zu bearbeiten. Andernfalls wird PATH in seiner vollen Pracht mit Semikolon-Kruste in einem einzeiligen Textfeld angezeigt. Geben Sie Ihr Bestes, um die erforderlichen Änderungen vorzunehmen, ohne Ihr System zu beschädigen.

Sauber PATH

Schau dir PATH an. Sie haben mit ziemlicher Sicherheit zwei Variablen PATH (aufgrund von Variablen für Benutzer- und Systemumgebung). Sie müssen sich beide ansehen.

Suchen Sie nach anderen Java Pfaden und entfernen Sie sie. Ihre Existenz kann zu allerlei Konflikten führen. (Wenn Sie beispielsweise JRE 8 und JDK 11 in PATH in dieser Reihenfolge haben, ruft javac den Compiler Java 11 auf, der Dateien der Version 55 _.class_ erstellt, Java jedoch Die Java 8-JVM, die nur bis Version 52 unterstützt, und Sie werden nicht unterstützte Versionsfehler feststellen und keine Programme kompilieren und ausführen können.) Umgehen Sie diese Probleme, indem Sie sie ausführen Sicher, Sie haben nur einen Java Pfad in PATH. Und wenn Sie schon dabei sind, können Sie auch deinstallieren Sie alte Java Versionen . Und denken Sie daran, dass Sie müssen nicht sowohl ein JDK als auch ein JRE haben.

Wenn Sie _C:\ProgramData\Oracle\Java\javapath_ haben, auch das entfernen. Oracle wollte das Problem lösen, dass nach Upgrades Java Pfade unterbrochen werden, indem ein symbolischer Link erstellt wird, der immer auf die neueste Java Installation verweist. Leider zeigt es oft auf den falschen Ort oder funktioniert einfach nicht . Es ist besser, diesen Eintrag zu entfernen und den Pfad Java manuell zu verwalten.

Jetzt ist auch eine gute Gelegenheit, eine allgemeine Haushaltsführung für PATH durchzuführen. Wenn Sie Pfade zu Software haben, die nicht mehr auf Ihrem PC installiert sind, können Sie diese entfernen. Sie können auch die Reihenfolge der Pfade ändern (wenn Sie sich für solche Dinge interessieren).

Zu PATH hinzufügen

Nehmen Sie nun den Pfad Java, den Sie vor drei Schritten gefunden haben, und platzieren Sie ihn im System PATH.

Es sollte keine Rolle spielen, wohin in der Liste Ihr neuer Pfad führt. es am Ende zu platzieren ist eine gute Wahl.

Wenn Sie die Benutzeroberfläche vor Windows 10 verwenden, stellen Sie sicher, dass Sie die Semikolons richtig platziert haben. Es sollte genau einen Pfad geben, der jeden Pfad in der Liste trennt.

Es gibt hier wirklich nicht viel anderes zu sagen. Fügen Sie einfach den Pfad zu PATH hinzu und klicken Sie auf OK.

Set _Java_HOME_

Während Sie gerade dabei sind, können Sie auch _Java_HOME_ einstellen. Dies ist eine weitere Umgebungsvariable, die auch den Pfad Java enthalten sollte. Viele Java und Nicht-Java-Programme, einschließlich des populären Java Build-Systems Gradle , lösen Fehler aus, wenn es nicht korrekt eingestellt ist.

Wenn _Java_HOME_ nicht vorhanden ist, erstellen Sie es als neue Systemumgebungsvariable. Stellen Sie denselben Java Pfad ein, den Sie zu PATH hinzugefügt haben.

Denken Sie daran, _Java_HOME_ auch nach dem Upgrade von Java zu bearbeiten.

Schließen Sie die Eingabeaufforderung, und öffnen Sie sie erneut

Obwohl Sie PATH geändert haben, sehen alle laufenden Programme, einschließlich cmd, nur das alte PATH. Dies liegt daran, dass die Liste aller Umgebungsvariablen erst zu Beginn der Ausführung in ein Programm kopiert wird. Danach wird nur die zwischengespeicherte Kopie abgefragt.

Es gibt keine gute Möglichkeit, die Umgebungsvariablen von cmd zu aktualisieren , also schließen Sie einfach die Eingabeaufforderung und öffnen Sie sie erneut. Wenn Sie eine IDE verwenden, schließen Sie diese ebenfalls und öffnen Sie sie erneut.

Siehe auch

398
carlos c.

versuch das .. ich hatte es auch aber jetzt ist es in XP gelöst ..

C:\ YourFolder >set path=C:\Program Files\Java\jdk1.7.0_09\bin;
C:\ YourFolder >javac YourCode.Java
75

Sie haben den Befehl set falsch eingegeben - Sie haben den Backslash nach C: verpasst. Es sollte sein:

C:\>set path=C:\Program Files (x86)\Java\jdk1.7.0\bin
44
Raghuram

Führen Sie an der Eingabeaufforderung Folgendes aus: set Path="C:\Program Files\Java\jdk1.7.0_09\bin" oder set PATH="C:\Program Files\Java\jdk1.7.0_09\bin"

Ich habe es versucht und es funktioniert gut.

10
fresher

Wenn der Befehl Java funktioniert und Probleme mit Javac auftreten. dann zuerst in jdks bin-Verzeichnis nachsehen, ob die Datei javac.exe vorhanden ist oder nicht. Wenn die Datei javac.exe vorhanden ist, legen Sie Java_HOME als Systemvariable fest.

5
Umrao Rawat

Überprüfen Sie Ihre Umgebungsvariablen.

In meinem Fall hatte ich Java_HOME sowohl in den Variablen Systemvariablen als auch in meinen Variablen Benutzerkonto gesetzt und letztere wurde auf falsche Java-Version gesetzt =. Ich hatte auch das gleiche Problem mit der Pfadvariablen.

Nach Löschen von Java_HOME aus meinem Benutzerkonto Variablen und Entfernen des falschen Pfads aus der Pfadvariablen hat es richtig funktioniert.

3
wabisabit