javac ne fonctionne pas dans l'invite de commande Windows

132

J'essaie d'utiliser javacavec l'invite de commande Windows, mais cela ne fonctionne pas.

Après avoir ajouté le répertoire "C:\Program Files\Java\jdk1.6.0_16\bin\"à la fin de la PATHvariable d'environnement, la javacommande fonctionne correctement, mais l'utilisation javacme donne l'erreur suivante:

«javac» n'est pas reconnu comme une commande interne ou externe, un programme utilisable ou un fichier de commandes.

Domenic
la source

Réponses:

162

Si vous l'avez ajouté dans le panneau de configuration alors que votre invite de commande était ouverte, cela n'affectera pas votre invite de commande actuelle. Vous devrez quitter et rouvrir ou simplement faire:

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

A titre de vérification, exécutez:

echo %path%

à partir de votre invite de commande et dites-nous ce que c'est.

Sinon, assurez-vous qu'il y a un javac dans ce répertoire en essayant:

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

à partir de l'invite de commande. Vous pouvez également indiquer quel exécutable (le cas échéant) est utilisé avec la commande:

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

C'est une astuce intéressante similaire aux commandes whichet / ou whencedans certains systèmes d'exploitation de type UNIX.

paxdiablo
la source
11
ah oui, tout ce que j'avais à faire était de rouvrir l'invite de commande et cela a bien fonctionné, merci!
Domenic
1
+1. Le "for% i in (java.exe) do @echo% ~ $ PATH: i" vient de sauver ma journée. Je ne suis qu'un utilisateur Windows occasionnel et je ne savais tout simplement pas qu'il pourrait y avoir encore un autre java.exe caché dans c: \ windows \ system :)
david a.
1
La commande set path ci-dessus ne fonctionne pas pour moi sous Windows 7. J'ai dû utiliser set path = "% path%; c: \ program files \ java \ jdk1.6.0_16 \ bin. C'est sans guillemets! Je ne suis pas familier avec la ligne de commande Windows mais il semble que les guillemets soient préservés. Donc, les avoir dans le% path% le rendra totalement inutilisable.
user716468
@ user716468, Il existe un moyen graphique de le faire dans Windows au lieu de la ligne de commande. Si vous êtes sous Windows 7, tapez simplement var dans la recherche du menu Démarrer et cliquez sur Modifier les variables d'environnement. Si vous êtes sous Windows XP, cliquez avec le bouton droit sur Poste de travail, cliquez sur les propriétés, accédez à l'onglet avancé et cliquez sur le bouton Variables d'environnement en bas. Vous y trouverez deux zones de liste. Trouvez celui avec le nom PATH dans la zone de liste du bas et cliquez sur Modifier. Ajoutez maintenant le chemin d'accès à votre JDK précédé d'un point-virgule. Vous avez terminé!
fz_salam
il y a aussi une commande "where" dans les lignes de commande Windows récentes
x29a
87

Le système d'exploitation Windows recherche le répertoire actuel et les répertoires répertoriés dans la variable d'environnement PATH pour les programmes exécutables. Les programmes de JDK (tels que le compilateur Java javac.exe et Java runtime java.exe) résident dans le répertoire "\ bin" (où désigne le répertoire installé du JDK, par exemple C: \ Program Files \ Java \ jdk1.8.0_xx). Vous devez inclure le répertoire "\ bin" dans le PATH.

Pour modifier la variable d'environnement PATH sous Windows XP / Vista / 7/8:

  1. Panneau de configuration ⇒ Système ⇒ Paramètres système avancés

  2. Passer à l'onglet "Avancé" ⇒ Variables d'environnement

  3. Dans "Variables système", faites défiler vers le bas pour sélectionner "CHEMIN" ⇒ Modifier

((maintenant lisez ce qui suit 3 fois avant de continuer, IL N'Y A PAS D'ANNUL ))

Dans le champ "Valeur de la variable", INSÉRER "c: \ Program Files \ Java \ jdk1.8.0_xx \ bin" (Remplacez xx par le numéro de mise à jour et VÉRIFIEZ qu'il s'agit du répertoire binaire de votre JDK !!!) DEVANT tous les répertoires, suivi d'un point-virgule (;) qui sépare le répertoire binaire du JDK du reste des répertoires existants. NE SUPPRIMEZ aucune entrée existante; sinon, certaines applications existantes risquent de ne pas s'exécuter.

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

Capture d'écran

Mike
la source
Pour l'étape 4. J'ai trouvé que je devais sélectionner non pas jre <yournumber>, mais jdk <yournumber>. Ensuite, tout le reste a bien fonctionné.
Morgan Kenyon
Propre et clair! Meilleure réponse. A travaillé pour moi.
M_R_K
Dans mon cas, pour l'étape 4, j'ai ouvert jdk. En gros, j'avais ceci pour PATH: C: \ Program Files \ Java \ jdk1.7.0_67 \ bin. javac.exe n'était pas dans le jre mais dans le jdk.
sedeh
Works for Me :)
RAJESH KUMAR ARUMUGAM
34

Après un long Google, j'ai appris que javac.exe serait à l'intérieur de JDK (C: \ Program Files \ Java \ jdk (numéro de version) \ bin) pas à l'intérieur de JRE (C: \ Program Files (x86) \ Java \ jre7 \ bin) "JRE n'est pas fourni avec un compilateur. Il (JRE) est simplement un environnement d'exécution Java. Vous avez besoin du kit de développement Java." pour utiliser le compilateur javac

javac ne fonctionnera pas si vous pointez bin dans jre

Pour utiliser javac dans cmd, JDK doit être installé sur votre système ...

Pour le chemin javac

chemin = C: \ Program Files (x86) \ Java \ jre7 \ bin c'est faux

chemin = C: \ Program Files \ Java \ jdk (numéro de version) \ bin c'est correct

Assurez-vous que "javac.exe" se trouve dans votre "C: \ Program Files \ Java \ jdk (numéro de version) \ bin"

Ne vous méprenez pas avec JRE et JDK, les deux sont totalement différents

si vous n'avez pas JDK, veuillez télécharger à partir de ce lien

https://jdk.java.net/

ou

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

thread de référence pour JDK VS JRE Quelle est la différence entre JDK et JRE?

TechDog
la source
6

Je sais que ce n'est peut-être pas votre erreur spécifique, mais j'ai eu une fois un espace principal dans mon chemin et java fonctionnerait mais javac ne le ferait pas.

Pour ce que ça vaut, j'offre le sage conseil: "Examinez votre chemin de près".

Sam
la source
5

Essayez les solutions ici: http://techdem.centerkey.com/2009/05/javahome-command-script.html

Celles-ci sont beaucoup plus robustes à changer - comme lorsque vous mettez à niveau le JDK ou JRE, car il n'y a pas de chemin codé en dur.

La solution rapide (si vous ne souhaitez pas lire le blog) est

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

Vous pouvez ensuite ajouter ces lignes à un script de démarrage / connexion.

Jason
la source
2
Pour appeler javac comme ça, j'ai dû utiliser "set PATH =% PATH%;% JAVA_HOME% \ bin" (notez l'ajout de \ bin).
user31389
4

Je devais juste le faire pour que cela fonctionne sur Windows 7 64.

Ouvrez une invite de commande (cmd.exe) et tapez:

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

Assurez-vous de rouvrir toutes les invites de commande Windows pour que la variable d'environnement soit également mise à jour.

Ryan Summey
la source
1
Je suppose que désactiver le classpath est mieux ici. Je n'utiliserais pas la variable CLASSPATH, surtout pas sous Windows où elle est globale et affecte plusieurs JRE ...
eckes
4

D'accord, cela ne peut pas toujours être le cas, mais beaucoup d'entre nous ont fait cette erreur dans le passé et peu d'entre eux n'en sont toujours pas conscients, c'est-à-dire que chaque fois que vous ajoutez un chemin (n'importe quel chemin) d'une variable d'environnement, vous sont susceptibles de frapper la barre d'espace juste après le "point-virgule" (comme vous le feriez normalement, après le "point" en tapant dans un éditeur).

Cela créera un espace de début dans le chemin, par exemple "C: \ Program Files \ Java \ jdk1.6.0 \ bin" et par conséquent "javac.exe" ne sera pas trouvé par le système.

Malais desai
la source
2

Modifiez le dossier "jdk1.7.0_45" "jdk1_7_0_60" et mettez à jour le chemin dans l'environnement Windows. Sinon, le chemin ignore le point à l'avant qui représente le fichier caché et le dossier n'est donc pas affiché dans les chaînes PATH.

NewDev
la source
0

"; C: \ Program Files \ Java \ jdk1.6.0 \ bin" vous pouvez parfois oublier de mettre un point-virgule sur le dernier chemin existant.

Sundararajan wasuvan
la source
0

J'ai rencontré exactement le même problème que java fonctionnerait mais javac ne le ferait pas sur une invite cmd dans Windows 8.

Le problème est survenu parce que j'ai oublié de supprimer '>'à la fin du nom du chemin, c'est-à-dire que c'était comme ça:

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

où c'était supposé être comme ça:

C:\Program Files\Java\jdk*\bin
Kevin
la source
0

Le chemin ne sera défini que pour le compte administrateur. Par conséquent, il est important de lancer l'invite de commande en tant qu'administrateur, si vous ne l'êtes pas déjà.


la source
0

Assurez-vous de ne pas autoriser d'espaces (espace blanc) entre les chemins dans la variable Path. Mon problème était que j'avais un espace blanc et je pense que Windows l'a traité comme un NULL et n'a pas lu mon chemin pour Java.

TRHUMMEL
la source
0

J'avais le même problème affiché dans ce titre. Java fonctionnerait, mais javacpas dans l'invite de commande Windows (cmd.exe ).

Pour moi, c'était simplement que j'avais placé un espace lors de l'ajout C:\Program Files\Java\jdk1.8.0\binà la fin de ma %PATH%variable d'environnement.
Supprimez l'espace entre le ;chemin du fichier et le chemin suivant.

Taiton
la source
0

J'apprécie que c'est une vieille question maintenant, mais ma solution n'était pas une réponse ici, alors postez-la au cas où quelqu'un d'autre essaie tout le reste.

Dans mon cas, une précédente installation de Java JRE (dans ProgramData / Oracle / Java) avait une variable de chemin en haut de ma liste de variables de chemin. Le contenu de ce chemin "Oracle" avait un java.exe mais pas un javac.exe. J'ai ajouté mon chemin JDK complet en haut de la liste des variables de chemin, avant celle "Oracle", puis il a récupéré javac.exe ainsi que java.

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

cette solution a fonctionné pour moi

Cristian Agudelo
la source
Je suggérerais d'ajouter plus d'annotation à votre réponse directement au lieu de simplement fournir un lien: le lien peut être rompu. Meilleures salutations
YakovL
-3

Quand j'ai essayé de faire du .java en .class la commande Javac ne fonctionnait pas. Je l'ai fait fonctionner en allant à C: \ Program Files (x86) \ Java \ jdk1.7.0_04 \ bin et quand j'étais dans ce répertoire, j'ai tapé Javac.exe C \ Test \ test.java et il a créé la classe avec cela tactique. Essayez ça.

Quelqu'un
la source
-7

Donnez-le comme "C: \ Program Files \ Java \ jdk1.6.0_16 \ bin". Supprimez la barre oblique inverse, cela fonctionnera

Valli
la source
2
Je ne pense pas que ce soit correct. Je peux définir mon chemin pour n'être rien d'autre que "C: \ Program Files \ Java \ jdk1.6.0_16 \ bin \" (avec une barre oblique finale) et cela fonctionne toujours bien.
paxdiablo