Javac funktioniert nicht in der Windows-Eingabeaufforderung

132

Ich versuche, javacmit der Windows-Eingabeaufforderung zu verwenden, aber es funktioniert nicht.

Nach dem Hinzufügen des Verzeichnisses "C:\Program Files\Java\jdk1.6.0_16\bin\"am Ende der PATHUmgebungsvariablen javafunktioniert der Befehl einwandfrei, aber bei Verwendung javacwird der folgende Fehler angezeigt:

'javac' wird nicht als interner oder externer Befehl, bedienbares Programm oder Batchdatei erkannt.

Domenic
quelle

Antworten:

162

Wenn Sie es in der Systemsteuerung hinzugefügt haben, während Ihre Eingabeaufforderung geöffnet war, hat dies keine Auswirkungen auf Ihre aktuelle Eingabeaufforderung. Sie müssen beenden und erneut öffnen oder einfach Folgendes tun:

set "path=%path%;c:\program files\java\jdk1.6.0_16\bin"

Führen Sie zur Überprüfung Folgendes aus:

echo %path%

von Ihrer Eingabeaufforderung und lassen Sie uns wissen, was es ist.

Stellen Sie andernfalls sicher, dass sich in diesem Verzeichnis ein Javac befindet, indem Sie Folgendes versuchen:

"c:\program files\java\jdk1.6.0_16\bin\javac.exe"

von der Eingabeaufforderung. Sie können auch feststellen, welche ausführbare Datei (falls vorhanden) mit dem Befehl verwendet wird:

for %i in (javac.exe) do @echo %~$PATH:i

Dies ist ein netter Trick, der den Befehlen whichund / oder whenceBefehlen in einigen UNIX-Betriebssystemen ähnelt .

paxdiablo
quelle
11
ah ja, alles was ich tun musste war die Eingabeaufforderung erneut zu öffnen und es hat gut funktioniert, danke!
Domenic
1
+1. Das "für% i in (java.exe) do @echo% ~ $ PATH: i" hat gerade meinen Tag gerettet. Ich bin nur ein gelegentlicher Windows-Benutzer und wusste einfach nicht, dass es in c: \ windows \ system noch eine versteckte java.exe geben könnte :)
david a.
1
Der obige Befehl set path funktioniert unter Windows 7 nicht für mich. Ich musste set path = "% path%; c: \ Programme \ java \ jdk1.6.0_16 \ bin verwenden. Das ist ohne Anführungszeichen! Ich bin nicht vertraut mit Windows-Befehlszeile, aber es scheint, dass Anführungszeichen beibehalten werden.
Wenn
@ user716468, Es gibt eine GUI-Möglichkeit, dies in Windows anstelle der Befehlszeile zu tun. Wenn Sie unter Windows 7 arbeiten, geben Sie einfach var in die Startmenüsuche ein und klicken Sie auf Umgebungsvariablen bearbeiten. Wenn Sie unter Windows XP arbeiten, klicken Sie mit der rechten Maustaste auf Arbeitsplatz, klicken Sie auf Eigenschaften, wechseln Sie zur Registerkarte Erweitert und klicken Sie unten auf die Schaltfläche Umgebungsvariablen. Dort finden Sie zwei Listenfelder. Finden Sie die mit dem Namen PATH aus dem unteren Listenfeld heraus und klicken Sie auf Bearbeiten. Fügen Sie nun den Pfad zu Ihrem JDK hinzu, dem ein Semikolon vorangestellt ist. Du bist fertig!
fz_salam
Es gibt auch einen "where" -Befehl in den letzten Windows-Befehlszeilen
x29a
87

Das Windows-Betriebssystem durchsucht das aktuelle Verzeichnis und die in der Umgebungsvariablen PATH aufgeführten Verzeichnisse nach ausführbaren Programmen. Die JDK-Programme (wie der Java-Compiler javac.exe und die Java-Laufzeit java.exe) befinden sich im Verzeichnis "\ bin" (wobei das installierte JDK-Verzeichnis bezeichnet wird, z. B. C: \ Programme \ Java \ jdk1.8.0_xx). Sie müssen das Verzeichnis "\ bin" in den PATH aufnehmen.

So bearbeiten Sie die Umgebungsvariable PATH in Windows XP / Vista / 7/8:

  1. Systemsteuerung ⇒ System ⇒ Erweiterte Systemeinstellungen

  2. Wechseln Sie zur Registerkarte "Erweitert" ⇒ Umgebungsvariablen

  3. Scrollen Sie unter "Systemvariablen" nach unten und wählen Sie "PFAD" ⇒ Bearbeiten

((Lesen Sie jetzt die folgenden 3 Male, bevor Sie fortfahren , es gibt kein Rückgängigmachen ))

Geben Sie im Feld "Variablenwert" "c: \ Programme \ Java \ jdk1.8.0_xx \ bin" (Ersetzen Sie xx durch die Upgrade-Nummer ein und überprüfen Sie, ob dies das Binärverzeichnis Ihres JDK ist !!!) VOR allen vorhandenen Verzeichnisse, gefolgt von einem Semikolon (;), das das Binärverzeichnis des JDK vom Rest der vorhandenen Verzeichnisse trennt. LÖSCHEN SIE KEINE vorhandenen Einträge. Andernfalls werden einige vorhandene Anwendungen möglicherweise nicht ausgeführt.

Variable name  : PATH
Variable value : c:\Program Files\Java\jdk1.8.0_xx\bin;[existing entries...]

Bildschirmfoto

Mike
quelle
Für Schritt 4 stellte ich fest, dass ich nicht jre <IhreNummer>, sondern jdk <IhreNummer> auswählen musste. Dann hat alles gut geklappt.
Morgan Kenyon
Ordentlich und klar! Beste Antwort. Hat für mich gearbeitet.
M_R_K
In meinem Fall habe ich für Schritt 4 jdk geöffnet. Im Wesentlichen hatte ich dies für PATH: C: \ Programme \ Java \ jdk1.7.0_67 \ bin. javac.exe war nicht im jre, sondern im jdk.
Sedeh
Funktioniert für mich :)
RAJESH KUMAR ARUMUGAM
34

Nach langem Google wurde mir klar, dass sich javac.exe in JDK (C: \ Programme \ Java \ jdk (Versionsnummer) \ bin) und nicht in JRE (C: \ Programme (x86) \ Java \ jre7 befindet \ bin) "JRE wird ohne Compiler geliefert. Es handelt sich lediglich um eine Java-Laufzeitumgebung. Sie benötigen das Java Development Kit." um den Compiler javac zu verwenden

javac funktioniert nicht, wenn Sie bin in jre zeigen

Um javac in cmd verwenden zu können, muss JDK auf Ihrem System installiert sein ...

Für Javac Pfad

Pfad = C: \ Programme (x86) \ Java \ jre7 \ bin das ist falsch

Pfad = C: \ Programme \ Java \ jdk (Versionsnummer) \ bin das ist richtig

Stellen Sie sicher, dass sich "javac.exe" in "C: \ Programme \ Java \ jdk (Versionsnummer) \ bin" befindet.

Verwechseln Sie sich nicht mit JRE und JDK. Beide sind völlig unterschiedlich

Wenn Sie kein JDK haben, laden Sie es bitte von diesem Link herunter

https://jdk.java.net/

oder

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Referenz-Thread für JDK VS JRE Was ist der Unterschied zwischen JDK und JRE?

TechDog
quelle
6

Ich weiß, dass dies möglicherweise nicht Ihr spezifischer Fehler ist, aber ich hatte einmal einen führenden Platz auf meinem Weg und Java würde funktionieren, Java jedoch nicht.

Für das, was es wert ist, biete ich den weisen Rat an: "Untersuche deinen Weg genau".

Sam
quelle
5

Probieren Sie die Lösungen hier aus: http://techdem.centerkey.com/2009/05/javahome-command-script.html

Diese sind viel robuster zu ändern - wie beim Upgrade des JDK oder JRE, da es keinen fest codierten Pfad gibt.

Die schnelle Lösung (wenn Sie den Blog nicht lesen möchten) ist

C:\>for /d %i in ("\Program Files\Java\jdk*") do set JAVA_HOME=%i
C:\>set PATH=%PATH%;%JAVA_HOME%

Sie können diese Zeilen dann einem Start- / Anmeldeskript hinzufügen.

Jason
quelle
2
Um javac so aufzurufen, musste ich "set PATH =% PATH%;% JAVA_HOME% \ bin" verwenden (beachten Sie das hinzugefügte \ bin).
user31389
4

Ich musste dies nur tun, damit dies unter Windows 7 64 funktioniert.

Öffnen Sie eine Eingabeaufforderung (cmd.exe) und geben Sie Folgendes ein:

set CLASSPATH=C:\Program Files\Java\jdk1.7.0_01\bin

Stellen Sie sicher, dass Sie alle laufenden Eingabeaufforderungen von Windows erneut öffnen, um auch die Umgebungsvariable zu aktualisieren.

Ryan Summey
quelle
1
Ich denke, das Deaktivieren des Klassenpfads ist hier besser. Ich würde die CLASSPATH-Variable nicht verwenden, insbesondere nicht unter Windows, wo sie global ist und mehrere JREs betrifft ...
eckes
4

Okay, das kann nicht immer der Fall sein, aber viele von uns haben diesen Fehler in der Vergangenheit gemacht, und nur wenige von ihnen sind sich dessen immer noch nicht bewusst, dh jedes Mal, wenn Sie einen Pfad (einen beliebigen Pfad) einer Umgebungsvariablen anhängen, sind Sie es Es ist wahrscheinlich, dass Sie die Leertaste direkt nach dem "Semikolon" drücken (wie Sie es normalerweise tun würden, nach dem "Punkt", während Sie einen Editor eingeben).

Dadurch wird ein führender Bereich im Pfad erstellt, z. B. "C: \ Programme \ Java \ jdk1.6.0 \ bin", und daher wird "javac.exe" vom System nicht gefunden.

Malaiischer Desai
quelle
2

Ändern Sie den Ordner "jdk1.7.0_45" "jdk1_7_0_60" und aktualisieren Sie den Pfad in der Windows-Umgebung. Andernfalls ignoriert der Pfad den Punkt an der Vorderseite, der für versteckte Dateien steht, sodass der Ordner nicht in PATH-Zeichenfolgen angezeigt wird.

NewDev
quelle
0

"; C: \ Programme \ Java \ jdk1.6.0 \ bin" Manchmal vergessen Sie möglicherweise, das Semikolon auf den letzten vorhandenen Pfad zu setzen.

Sundararajan Wasuvan
quelle
0

Ich hatte genau das gleiche Problem, dass Java funktionieren würde, aber Javac nicht auf einer cmd-Eingabeaufforderung in Windows 8.

Das Problem trat auf, weil ich vergessen hatte, '>'am Ende des Pfadnamens zu entfernen , dh es war wie folgt:

C:\Program Files\Java\jdk*\bin>

wo es so sein sollte:

C:\Program Files\Java\jdk*\bin
Kevin
quelle
0

Der Pfad wird nur für das Administratorkonto festgelegt. Daher ist es wichtig, die Eingabeaufforderung als Administrator zu starten, falls Sie dies noch nicht getan haben.


quelle
0

Stellen Sie sicher, dass zwischen den Pfaden in der Pfadvariablen keine Leerzeichen (Leerzeichen) zulässig sind. Mein Problem war, dass ich Leerzeichen hatte und ich glaube, Windows hat es als NULL behandelt und meinen Pfad für Java nicht eingelesen.

TRHUMMEL
quelle
0

Ich hatte das gleiche Problem in diesem Titel. Java würde funktionieren, aber javacnicht in der Windows-Eingabeaufforderung (cmd.exe ).

Für mich war es einfach so, dass ich beim Hinzufügen C:\Program Files\Java\jdk1.8.0\binam Ende meiner %PATH%Umgebungsvariablen ein Leerzeichen eingefügt hatte.
Entfernen Sie den Abstand zwischen dem ;und dem nächsten Dateipfad.

Taiton
quelle
0

Ich weiß, dass dies jetzt eine alte Frage ist, aber meine Lösung war hier keine Antwort. Veröffentlichen Sie sie daher, falls jemand anderes den Rest versucht.

In meinem Fall hatte eine frühere Installation der Java-JRE (in ProgramData / Oracle / Java) eine Pfadvariable oben in meiner Liste der Pfadvariablen. Der Inhalt dieses "Oracle" -Pfads hatte eine java.exe, aber keine javac.exe. Ich habe meinen vollständigen JDK-Pfad am Anfang der Liste der Pfadvariablen vor dem "Oracle" -Pfad hinzugefügt und dann sowohl javac.exe als auch java aufgenommen.

Neil
quelle
0
for /d %i in ("\Program Files\Java\jdk*") do set JAVA_HOME=%i
set JAVA_HOME

Diese Lösung hat bei mir funktioniert

Cristian Agudelo
quelle
Ich würde vorschlagen, Ihrer Antwort direkt weitere Anmerkungen hinzuzufügen, anstatt nur einen Link bereitzustellen: Der Link kann beschädigt werden.
Viele
-3

Als ich versuchte, die .java zu .class zu machen, funktionierte der Befehl Javac nicht. Ich habe es zum Laufen gebracht, indem ich zu C: \ Programme (x86) \ Java \ jdk1.7.0_04 \ bin gegangen bin. Als ich mich in diesem Verzeichnis befand, habe ich Javac.exe C \ Test \ test.java eingegeben und damit die Klasse erstellt Taktik. Probieren Sie das aus.

Jemand
quelle
-7

Geben Sie es als "C: \ Programme \ Java \ jdk1.6.0_16 \ bin" an. Entfernen Sie den Backslash, es wird funktionieren

valli
quelle
2
Ich denke nicht, dass das richtig ist. Ich kann meinen Pfad auf "C: \ Programme \ Java \ jdk1.6.0_16 \ bin \" (mit nachfolgendem Schrägstrich) setzen und es funktioniert immer noch einwandfrei.
Paxdiablo