web-dev-qa-db-fra.com

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

Je rencontre une erreur en essayant de compiler des programmes Java.

Je suis sous Windows (il s'agit d'un problème spécifique à Windows) et le dernier JDK est installé.

J'ai tenté une solution impliquant la variable PATH, mais l'erreur persiste.

Sortie de la console:

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

Pour les lecteurs expérimentés:

  1. Trouvez le chemin Java; cela ressemble à ceci: _C:\Program Files\Java\jdkxxxx\bin\_
  2. Le menu de démarrage recherche "variable d'environnement" pour ouvrir la boîte de dialogue des options.
  3. Examiner PATH. Supprimez les anciens chemins Java.
  4. Ajoutez le nouveau chemin Java à PATH.
  5. Éditer _Java_HOME_.
  6. Fermez et rouvrez la console/IDE.

Bienvenue!

Vous avez rencontré l'un des problèmes techniques les plus notoires auxquels sont confrontés les débutants Java: le message d'erreur _'xyz' is not recognized as an internal or external command..._.

En un mot, vous n'avez pas installé Java correctement . La finalisation de l'installation de Java sous Windows nécessite certaines étapes manuelles. Vous devez toujours suivre ces étapes après l'installation de Java, y compris après la mise à niveau du JDK.

Variables d'environnement et PATH

(Si vous comprenez déjà cela, n'hésitez pas à sauter les trois prochaines sections.)

Lorsque vous exécutez _javac HelloWorld.Java_, cmd doit déterminer où se trouve _javac.exe_. Ceci est accompli avec PATH, une variable d'environnement.

Une variable d’environnement est une paire clé-valeur spéciale (par exemple, _windir=C:\WINDOWS_). La plupart sont livrés avec le système d'exploitation, et certains sont nécessaires au bon fonctionnement du système. Une liste d’entre eux est transmise à chaque programme (y compris cmd) au démarrage. Sous Windows , il existe deux types : variables d’environnement utilisateur et variables d’environnement système .

Vous pouvez voir vos variables d'environnement comme ceci:

_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
...
_

La variable la plus importante est PATH . C'est une liste de chemins, séparés par _;_. Lorsqu'une commande est entrée dans cmd, chaque répertoire de la liste est analysé pour rechercher un exécutable correspondant.

Sur mon ordinateur, PATH est:

_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
_

Lorsque vous exécutez _javac HelloWorld.Java_, cmd, lorsque vous réalisez que javac n'est pas un commande interne , recherche système PATH suivi de l'utilisateur PATH . Il entre mécaniquement tous les répertoires de la liste et vérifie si _javac.com_, _javac.exe_, _javac.bat_, etc. est présent. Lorsqu'il trouve javac, il l'exécute. Quand ce n'est pas le cas, il affiche _'javac' is not recognized as an internal or external command, operable program or batch file._

Vous devez ajouter le répertoire des exécutables Java à PATH.

JDK contre JRE

(Si vous comprenez déjà cela, n'hésitez pas à sauter cette section.)

Lors du téléchargement de Java, vous avez le choix entre:

  • Le Java Runtime Environment (JRE), qui inclut les outils nécessaires pour exécuter les programmes Java, mais et non pour en compiler de nouveaux - il contient Java mais pas javac.
  • Le Java Development Kit (JDK), qui contient à la fois Java et javac, ainsi qu'un hôte d'autres outils de développement. Le JDK est un sur-ensemble du JRE.

Vous devez vous assurer que vous avez installé le JDK . Si vous avez uniquement installé le JRE, vous ne pouvez pas exécuter javac car le compilateur Java n'est pas installé sur votre disque dur. Vérifiez votre liste de programmes Windows et assurez-vous que le nom du paquet Java contient les mots "Kit de développement".

Ne pas utiliser set

(Si vous n'aviez pas l'intention de le faire, n'hésitez pas à sauter cette section.)

Plusieurs autres réponses recommandent d’exécuter certaines variantes de:

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

Ne faites pas cela. Il y a plusieurs problèmes majeurs avec cette commande:

  1. Cette commande efface tout le reste de PATH et le remplace par le chemin Java. Après avoir exécuté cette commande, il est possible que plusieurs autres commandes ne fonctionnent pas.
  2. Votre chemin Java n'est probablement pas _C:\Program Files\Java\jdk1.7.0_09\bin_ - vous avez presque certainement une version plus récente du JDK, qui aurait un chemin différent.
  3. La nouvelle PATH s'applique uniquement à la session cmd en cours. Vous devrez ressaisir la commande set chaque fois que vous ouvrirez l'invite de commande.

Les points n ° 1 et n ° 2 peuvent être résolus avec cette version légèrement meilleure:

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

Mais ce n'est qu'une mauvaise idée en général.

Trouvez le chemin Java

La bonne façon commence par trouver où vous avez installé Java. Cela dépend de comment vous avez installé Java.

Installateur Exe

Vous avez installé Java en exécutant un programme d'installation. Le programme d'installation d'Oracle place les versions de Java sous _C:\Program Files\Java\_ (ou C:\Program Files (x86)\Java\). Avec Explorateur de fichiers ou Invite de commandes, accédez à ce répertoire.

Chaque sous-dossier représente une version de Java. S'il n'y en a qu'un, vous l'avez trouvé. Sinon, choisissez celui qui ressemble à la version la plus récente. Assurez-vous que le nom du dossier commence par jdk (par opposition à jre). Entrez le répertoire.

Ensuite, entrez le répertoire bin de cela.

Vous êtes maintenant dans le bon répertoire. Copiez le chemin. Si dans l'explorateur de fichiers, cliquez sur la barre d'adresse. Si vous êtes dans l'invite de commande, copie l'invite.

Le chemin Java résultant doit être sous la forme (sans guillemets):

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

Fichier zip

Vous avez téléchargé un fichier .Zip contenant le JDK. Extrayez-le dans un endroit aléatoire où il ne vous gênera pas; _C:\Java\_ est un choix acceptable.

Ensuite, localisez le dossier bin quelque part dans celui-ci.

Vous êtes maintenant dans le bon répertoire. Copiez son chemin. C'est le chemin Java.

Rappelez-vous de ne jamais déplacer le dossier, car cela invaliderait le chemin.

Ouvrir la boîte de dialogue des paramètres

C’est le dialogue pour éditer PATH. Il existe de nombreuses façons d'accéder à cette boîte de dialogue, en fonction de la version de Windows, des paramètres de l'interface utilisateur et de la configuration de votre système.

Essayez-en quelques-unes:

  • Menu de démarrage/barre de recherche "recherche de" variable d'environnement "
  • Win + R "_control sysdm.cpl,,3_
  • Win + R "_SystemPropertiesAdvanced.exe_" Variables d'environnement
  • Explorateur de fichiers "tapez dans la barre d'adresse __Control Panel\System and Security\System_" Paramètres système avancés (extrême gauche, dans la barre latérale) "Variables d'environnement
  • Bureau "Cliquez avec le bouton droit de la souris sur Cet ordinateur" Propriétés "Paramètres système avancés" Variables d'environnement
  • Menu Démarrer "cliquez avec le bouton droit sur Ordinateur" Propriétés "Paramètres système avancés" Variables d'environnement
  • Panneau de configuration (mode icône) "Système" Paramètres système avancés "Variables d'environnement
  • Panneau de configuration (mode catégorie) "Système et sécurité" Système "Paramètres système avancés" Variables d'environnement
  • Bureau "faites un clic droit sur Poste de travail" Avancé "Variables d'environnement
  • Panneau de configuration "Système" Avancé "Variables d'environnement

N'importe lequel d'entre eux devrait vous mener à la boîte de dialogue des paramètres appropriés.

Si vous utilisez Windows 10, Microsoft vous a accordé une nouvelle interface utilisateur élégante pour modifier PATH. Sinon, vous verrez PATH dans toute sa splendeur incrustée de points-virgules, insérée dans une zone de texte d'une seule ligne. Faites de votre mieux pour apporter les modifications nécessaires sans casser votre système.

Clean PATH

Regardez PATH. Vous avez presque certainement deux variables PATH (en raison des variables d'environnement utilisateur/système). Vous devez regarder les deux.

Recherchez d'autres Java chemins et supprimez-les. Leur existence peut provoquer toutes sortes de conflits. (Par exemple, si vous avez JRE 8 et JDK 11 dans PATH, dans cet ordre, javac invoquera le compilateur Java 11, qui créera des fichiers de version 55 _.class_, mais Java invoquera la machine virtuelle Java Java 8, qui ne prend en charge que la version 52, et vous rencontrerez erreurs de version non prises en charge et ne serez pas en mesure de compiler et d'exécuter des programmes.) Évitez ces problèmes en faisant Assurez-vous de n’avoir qu’un chemin Java dans PATH. Et pendant que vous y êtes, vous pouvez également désinstaller les anciennes versions Java . Et rappelez-vous que vous n'avez pas besoin d'avoir un JDK et un JRE.

Si vous avez _C:\ProgramData\Oracle\Java\javapath_, supprimez-le également . Oracle avait l'intention de résoudre le problème de rupture des chemins Java après les mises à niveau en créant un lien symbolique qui pointerait toujours vers la dernière installation Java. Malheureusement, il finit souvent par indiquer le mauvais emplacement ou ne fonctionne tout simplement pas . Il est préférable de supprimer cette entrée et de gérer manuellement le chemin Java.

C’est aussi une bonne occasion d’effectuer des tâches ménagères générales sur PATH. Si des chemins relatifs à des logiciels ne sont plus installés sur votre PC, vous pouvez les supprimer. Vous pouvez également mélanger l'ordre des chemins (si vous vous souciez de choses comme ça).

Ajouter à PATH

Maintenant, prenez le chemin Java que vous avez trouvé il y a trois étapes et placez-le dans le système PATH.

Peu importe où votre nouveau chemin va dans la liste; le placer à la fin est un bon choix.

Si vous utilisez l'interface utilisateur antérieure à Windows 10, assurez-vous d'avoir placé les points-virgules correctement. Il devrait y avoir exactement un séparant chaque chemin de la liste.

Il n'y a vraiment pas grand chose d'autre à dire ici. Ajoutez simplement le chemin à PATH et cliquez sur OK.

Set _Java_HOME_

Pendant que vous y êtes, vous pouvez également définir _Java_HOME_. Ceci est une autre variable d'environnement qui devrait également contenir le chemin Java. De nombreux programmes Java et non Java, y compris le populaire système de construction Java Gradle , généreront des erreurs s'il n'est pas correctement défini.

Si _Java_HOME_ n'existe pas, créez-le en tant que nouvelle variable d'environnement système. Définissez-le sur le même chemin Java que vous avez ajouté à PATH.

Pensez également à modifier _Java_HOME_ après la mise à niveau de Java.

Fermer et rouvrir l'invite de commande

Bien que vous ayez modifié PATH, tous les programmes en cours, y compris cmd, ne voient que l'ancien PATH. En effet, la liste de toutes les variables d'environnement n'est copiée dans un programme que lorsqu'il commence à s'exécuter. par la suite, il ne consulte que la copie en cache.

Il n'y a pas de bon moyen de rafraîchir les variables d'environnement de cmd , fermez donc simplement Invite de commandes et ouvrez-le à nouveau. Si vous utilisez un IDE, fermez-le et rouvrez-le également.

Voir également

398
carlos c.

essayez ceci .. je l'avais aussi mais maintenant, il a résolu dans XP ..

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

Vous avez mal saisi la commande set - vous avez manqué la barre oblique inverse après C:. CA devrait etre:

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

Exécutez les commandes suivantes à partir de l'invite de commande: set Path="C:\Program Files\Java\jdk1.7.0_09\bin" ou set PATH="C:\Program Files\Java\jdk1.7.0_09\bin"

J'ai essayé cela et ça marche bien.

10
fresher

Si la commande Java fonctionne et que javac pose un problème. puis vérifiez d’abord que le fichier javac.exe du répertoire bin de jdk est présent ou non. Si le fichier javac.exe existe, définissez Java_HOME en tant que variable système.

5
Umrao Rawat

Vérifiez vos variables d'environnement.

Dans mon cas, Java_HOME était défini dans les variables variables système ainsi que dans mes variables compte d'utilisateur et cette dernière était définie sur un version incorrecte de Java =. J'ai également eu le même problème avec la variable Path.

Après suppression de Java_HOME de mon compte utilisateur variables et suppression du mauvais chemin de la variable Path, cela fonctionnait correctement.

3
wabisabit