javac non funziona nel prompt dei comandi di Windows


132

Sto cercando di utilizzare javaccon il prompt dei comandi di Windows, ma non funziona.

Dopo aver aggiunto la directory "C:\Program Files\Java\jdk1.6.0_16\bin\"alla fine della PATHvariabile d'ambiente, il javacomando funziona javaccorrettamente , ma l'utilizzo mi dà il seguente errore:

'javac' non è riconosciuto come comando interno o esterno, programma eseguibile o file batch.


Risposte:


162

Se l'hai aggiunto nel pannello di controllo mentre il prompt dei comandi era aperto, ciò non influirà sul prompt dei comandi corrente. Dovrai uscire e riaprire o semplicemente fare:

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

A titolo di controllo, eseguire:

echo %path%

dal tuo prompt dei comandi e facci sapere di cosa si tratta.

Altrimenti, assicurati che ci sia un javac in quella directory provando:

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

dal prompt dei comandi. Puoi anche dire quale eseguibile (se presente) viene utilizzato con il comando:

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

Questo è un trucco ordinato simile ai comandi whiche / o whencein alcuni sistemi operativi di tipo UNIX.


11
ah sì, tutto quello che dovevo fare era riaprire il prompt dei comandi e ha funzionato bene, grazie!
Domenic,

1
+1. "For% i in (java.exe) do @echo% ~ $ PATH: i" mi ha appena salvato la giornata. Sono solo un utente occasionale di Windows e non sapevo che ci potesse essere un altro java.exe nascosto in c: \ windows \ system :)
David a.

1
Il comando set path sopra non funziona per me in Windows 7. Ho dovuto usare set path = "% path%; c: \ program files \ java \ jdk1.6.0_16 \ bin. Questo è senza virgolette! Non ho familiarità con la riga di comando di Windows ma sembra che le virgolette siano conservate. Pertanto, averle nel percorso
%%

@ user716468, Esiste un modo GUI per farlo in Windows anziché nella riga di comando. Se sei su Windows 7, digita var nella ricerca del menu Start e fai clic su Modifica variabili d'ambiente. Se sei su Windows XP, fai clic con il pulsante destro del mouse su Risorse del computer, fai clic su Proprietà, vai alla scheda avanzata e fai clic sul pulsante Variabili d'ambiente nella parte inferiore. Lì puoi trovare due caselle di riepilogo. Scopri quello con il nome PERCORSO nella casella di riepilogo in basso e fai clic su Modifica. Ora aggiungi il percorso al tuo JDK preceduto da un punto e virgola. Hai finito!
fz_salam,

c'è anche un comando "dove" nelle righe di comando recenti di Windows
x29a

87

Il sistema operativo Windows cerca i programmi eseguibili nella directory corrente e nelle directory elencate nella variabile di ambiente PATH. I programmi di JDK (come il compilatore Java javac.exe e Java runtime java.exe) risiedono nella directory "\ bin" (dove indica la directory installata di JDK, ad es. C: \ Programmi \ Java \ jdk1.8.0_xx). Devi includere la directory "\ bin" nel PERCORSO.

Per modificare la variabile d'ambiente PATH in Windows XP / Vista / 7/8:

  1. Pannello di controllo ⇒ Sistema ⇒ Impostazioni di sistema avanzate

  2. Passa alla scheda "Avanzate" ⇒ Variabili d'ambiente

  3. In "Variabili di sistema", scorrere verso il basso per selezionare "PERCORSO" ⇒ Modifica

((ora leggi le seguenti 3 volte prima di procedere, NON ESISTE UNDO )

Nel campo "Valore variabile", INSERISCI "c: \ Programmi \ Java \ jdk1.8.0_xx \ bin" (Sostituisci xx con il numero di aggiornamento e VERIFICA che questa è la directory binaria del tuo JDK !!!) DAVANTI a tutti gli esistenti directory, seguite da un punto e virgola (;) che separa la directory binaria del JDK dal resto delle directory esistenti. NON ELIMINARE alcuna voce esistente; in caso contrario, alcune applicazioni esistenti potrebbero non funzionare.

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

Immagine dello schermo


Per il passaggio 4. Ho scoperto che dovevo selezionare non jre <numero>, ma jdk <numero>. Quindi tutto il resto ha funzionato bene.
Morgan Kenyon,

Pulito e chiaro! Migliore risposta. Ha funzionato per me.
M_R_K

Nel mio caso, per il passaggio 4, ho aperto jdk. In sostanza, ho avuto questo per PATH: C: \ Programmi \ Java \ jdk1.7.0_67 \ bin. javac.exe non era nel jre ma nel jdk.
sedeh

Funziona per me :)
RAJESH KUMAR ARUMUGAM

34

Dopo un lungo Google, sono venuto a sapere che javac.exe si trovava all'interno di JDK (C: \ Programmi \ Java \ jdk (numero versione) \ bin) non all'interno di JRE (C: \ Programmi (x86) \ Java \ jre7 \ bin) "JRE non viene fornito con un compilatore. It (JRE) è semplicemente un ambiente di runtime java. Ciò di cui hai bisogno è il kit di sviluppo Java." per usare il compilatore javac

javac non funzionerà se si punta il cestino all'interno di jre

Per usare javac in cmd, JDK deve essere installato nel tuo sistema ...

Per il percorso javac

percorso = C: \ Programmi (x86) \ Java \ jre7 \ bin questo è sbagliato

percorso = C: \ Programmi \ Java \ jdk (numero versione) \ bin questo è corretto

Assicurarsi che "javac.exe" sia all'interno di "C: \ Programmi \ Java \ jdk (numero versione) \ bin"

Non confonderti con JRE e JDK sono entrambi completamente diversi

se non hai JDK, scarica da questo link

https://jdk.java.net/

o

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

thread di riferimento per JDK VS JRE Qual è la differenza tra JDK e JRE?


6

So che questo potrebbe non essere il tuo errore specifico, ma una volta avevo uno spazio iniziale nel mio percorso e java avrebbe funzionato, ma javac no.

Per quello che vale, offro il saggio consiglio: "Esamina attentamente il tuo cammino".


5

Prova qui le soluzioni: http://techdem.centerkey.com/2009/05/javahome-command-script.html

Questi sono molto più robusti da modificare, come quando si aggiorna JDK o JRE, poiché non esiste un percorso codificato.

La soluzione rapida (se non vuoi leggere il blog) è

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

È quindi possibile aggiungere queste righe a uno script di avvio / accesso.


2
Per invocare javac in quel modo ho dovuto usare "set PATH =% PATH%;% JAVA_HOME% \ bin" (nota il \ bin aggiunto).
user31389

4

Ho dovuto fare solo questo per farlo funzionare su Windows 7 64.

Apri un prompt dei comandi (cmd.exe) e digita:

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

Assicurati di riaprire tutti i prompt dei comandi di Windows in esecuzione per aggiornare anche la variabile di ambiente.


1
Immagino che annullare il percorso di classe sia meglio qui. Non userei la variabile CLASSPATH, specialmente non su Windows dove è globale e influisce su più JRE ...
notare il

4

Ok, questo non può essere sempre il caso, ma molti di noi hanno commesso questo errore in passato e pochi di questi non ne sono ancora consapevoli, ovvero ogni volta che aggiungi un percorso (qualsiasi percorso) di qualsiasi variabile d'ambiente, tu è probabile che colpisca la barra spaziatrice subito dopo il "punto e virgola" (come faresti normalmente, dopo il "punto" durante la digitazione di un editor).

Ciò creerà uno spazio iniziale nel percorso, ad esempio "C: \ Programmi \ Java \ jdk1.6.0 \ bin" e pertanto "javac.exe" non verrà trovato dal sistema.


2

Cambia la cartella "jdk1.7.0_45" "jdk1_7_0_60" e aggiorna il percorso in ambiente Windows. Altrimenti, il percorso ignora il punto nella parte anteriore che sta per file nascosto e quindi la cartella non viene visualizzata nelle stringhe PATH.


0

"; C: \ Programmi \ Java \ jdk1.6.0 \ bin" a volte potresti dimenticare di mettere il punto e virgola sull'ultimo percorso esistente.


0

Ho affrontato lo stesso identico problema che java avrebbe funzionato ma javac non avrebbe richiesto un prompt cmd in Windows 8.

Il problema si è verificato perché ho dimenticato di rimuovere '>'alla fine del nome del percorso, ovvero era così:

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

dove doveva essere così:

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

0

Il percorso verrà impostato solo per l'account amministratore. Pertanto è importante avviare il prompt dei comandi come amministratore, se non lo si è già fatto.


0

Assicurarsi di non consentire spazi (spazio bianco) tra i percorsi nella variabile Path. Il mio problema era che avevo uno spazio bianco e credo che Windows lo trattasse come un NULL e non leggesse il mio percorso per Java.


0

Avevo lo stesso problema pubblicato in questo titolo. Java funzionerebbe, ma javacnon nel prompt dei comandi di Windows (cmd.exe ).

Per me, era semplicemente che avevo inserito uno spazio quando aggiungevo C:\Program Files\Java\jdk1.8.0\binalla fine della mia %PATH%variabile d'ambiente.
Rimuovere lo spazio tra il ;percorso del file e quello successivo.


0

Apprezzo che questa sia una vecchia domanda ora, ma la mia soluzione non era una risposta qui, quindi pubblicandola nel caso in cui qualcun altro provi tutto il resto.

Nel mio caso, una precedente installazione di Java JRE (in ProgramData / Oracle / Java) aveva una variabile di percorso in cima al mio elenco di variabili di percorso. Il contenuto di quel percorso "Oracle" aveva un java.exe ma non un javac.exe. Ho aggiunto il mio percorso JDK completo in cima all'elenco delle variabili del percorso, prima di quello "Oracle", e poi ho preso javac.exe e java.


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

questa soluzione ha funzionato per me


Suggerirei di aggiungere più annotazioni direttamente alla tua risposta invece di fornire semplicemente un collegamento: il collegamento potrebbe interrompersi. Cordiali saluti
YakovL

-3

Quando ho provato a rendere .java in .class il comando Javac non funzionava. Ho funzionato andando su C: \ Programmi (x86) \ Java \ jdk1.7.0_04 \ bin e quando ero su quella directory ho digitato Javac.exe C \ Test \ test.java e ha reso la classe con quella tattica. Provalo.


-7

Dagli come "C: \ Programmi \ Java \ jdk1.6.0_16 \ bin". Rimuovere la barra rovesciata funzionerà


2
Non penso sia corretto. Posso impostare il mio percorso come nient'altro che "C: \ Programmi \ Java \ jdk1.6.0_16 \ bin \" (con barra finale) e funziona ancora bene.
paxdiablo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.