Estoy experimentando un error al intentar compilar programas Java.
Estoy en Windows (este es un problema específico de Windows) y tengo instalado el último JDK.
He intentado una solución que involucra la PATH
variable, pero el error persiste.
Salida de consola:
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.
java
path
environment-variables
command-prompt
javac
usuario987137
fuente
fuente
Respuestas:
TL; DR
Para lectores experimentados:
C:\Program Files\Java\jdkxxxx\bin\
PATH
. Eliminar viejos caminos de Java.PATH
.JAVA_HOME
.¡Bienvenidos!
Te has encontrado con uno de los problemas técnicos más notorios que enfrentan los principiantes de Java: el
'xyz' is not recognized as an internal or external command...
mensaje de error.En pocas palabras, no ha instalado Java correctamente . Finalizar la instalación de Java en Windows requiere algunos pasos manuales. Siempre debe realizar estos pasos después de instalar Java, incluso después de actualizar el JDK.
Variables de entorno y
PATH
(Si ya comprende esto, no dude en saltarse las siguientes tres secciones).
Cuando ejecuta
javac HelloWorld.java
, cmd debe determinar dóndejavac.exe
se encuentra. Esto se logra conPATH
una variable de entorno.Una variable de entorno es un par clave-valor especial (p
windir=C:\WINDOWS
. Ej .). La mayoría viene con el sistema operativo, y algunos son necesarios para el funcionamiento adecuado del sistema. Una lista de ellos se pasa a cada programa (incluido cmd) cuando se inicia. En Windows , hay dos tipos : variables de entorno del usuario y variables de entorno del sistema .Puede ver sus variables de entorno de esta manera:
La variable más importante es
PATH
. Es una lista de caminos, separados por;
. Cuando se ingresa un comando en cmd, cada directorio de la lista se escaneará en busca de un ejecutable coincidente.En mi computadora,
PATH
es:Cuando ejecuta
javac HelloWorld.java
, cmd, al darse cuenta de quejavac
no es un comando interno , busca en el sistemaPATH
seguido por el usuarioPATH
. Entra mecánicamente cada directorio en la lista, y comprueba sijavac.com
,javac.exe
,javac.bat
, etc. está presente. Cuando lo encuentrajavac
, lo ejecuta. Cuando no lo hace, imprime'javac' is not recognized as an internal or external command, operable program or batch file.
Debe agregar el directorio de ejecutables de Java a
PATH
.JDK vs. JRE
(Si ya comprende esto, no dude en omitir esta sección).
Al descargar Java, se le ofrece una opción entre:
java
pero no contienejavac
.java
yjavac
, junto con una serie de otras herramientas de desarrollo. El JDK es un superconjunto del JRE.Debe asegurarse de haber instalado el JDK . Si solo instaló el JRE, no puede ejecutarlo
javac
porque no tiene una instalación del compilador Java en su disco duro. Verifique su lista de programas de Windows y asegúrese de que el nombre del paquete Java incluya las palabras "Kit de desarrollo".No usar
set
(Si no planeaba hacerlo de todos modos, no dude en omitir esta sección).
Varias otras respuestas recomiendan ejecutar alguna variación de:
No hagas eso. Hay varios problemas importantes con ese comando:
PATH
y lo reemplaza con la ruta de Java. Después de ejecutar este comando, puede encontrar varios otros comandos que no funcionan.C:\Program Files\Java\jdk1.7.0_09\bin
, casi definitivamente tiene una versión más nueva del JDK, que tendría una ruta diferente.PATH
solo se aplica a la sesión de cmd actual. Tendrá que volver a ingresar elset
comando cada vez que abra el símbolo del sistema.Los puntos 1 y 2 se pueden resolver con esta versión un poco mejor:
Pero es solo una mala idea en general.
Encuentra la ruta de Java
La forma correcta comienza con encontrar dónde ha instalado Java. Esto depende de cómo haya instalado Java.
Insta instalador
Ha instalado Java ejecutando un programa de instalación. El instalador de Oracle coloca versiones de Java debajo de
C:\Program Files\Java\
(oC:\Program Files (x86)\Java\
). Con el Explorador de archivos o el Símbolo del sistema, navegue a ese directorio.Cada subcarpeta representa una versión de Java. Si solo hay uno, lo has encontrado. De lo contrario, elija el que se parece a la versión más nueva. Asegúrese de que el nombre de la carpeta comience por
jdk
(en lugar dejre
). Ingrese el directorio.Luego ingrese el
bin
directorio de eso.Ahora estás en el directorio correcto. Copia el camino. Si está en el Explorador de archivos, haga clic en la barra de direcciones. Si está en el símbolo del sistema, copie el mensaje.
La ruta de Java resultante debe tener la forma de (sin comillas):
Archivo zip
Has descargado un archivo .zip que contiene el JDK. Extraerlo a un lugar aleatorio donde no se interponga en tu camino;
C:\Java\
Es una elección aceptable.Luego ubique la
bin
carpeta en algún lugar dentro de ella.Ahora estás en el directorio correcto. Copia su camino. Esta es la ruta de Java.
Recuerde no mover nunca la carpeta, ya que eso invalidaría la ruta.
Abrir el cuadro de diálogo de configuración
Ese es el diálogo para editar
PATH
. Existen numerosas formas de llegar a ese cuadro de diálogo, dependiendo de su versión de Windows, la configuración de la interfaz de usuario y de lo desordenada que sea la configuración de su sistema.Pruebe algunos de estos:
control sysdm.cpl,,3
SystemPropertiesAdvanced.exe
» Variables de entornoControl Panel\System and Security\System
» Configuración avanzada del sistema (extremo izquierdo, en la barra lateral) »Variables de entornoCualquiera de estos debe llevarlo al cuadro de diálogo de configuración correcto.
Si tiene Windows 10, Microsoft lo ha bendecido con una nueva y elegante interfaz de usuario para editar
PATH
. De lo contrario, veráPATH
en toda su gloria incrustada en punto y coma, apretada en un cuadro de texto de una sola línea. Haz tu mejor esfuerzo para hacer las ediciones necesarias sin romper tu sistema.Limpiar
PATH
Mira
PATH
. Casi definitivamente tiene dosPATH
variables (debido a las variables de entorno del usuario frente al sistema). Tienes que mirar a los dos.Busque otras rutas de Java y elimínelas. Su existencia puede causar todo tipo de conflictos. (Por ejemplo, si tiene JRE 8 y JDK 11 en
PATH
ese orden,javac
invocará el compilador Java 11, que creará.class
archivos de la versión 55 , perojava
invocará Java 8 JVM, que solo admite hasta la versión 52, y experimentará errores de versión no compatibles y no podrá compilar ni ejecutar ningún programa). Evite estos problemas asegurándose de que solo tenga una ruta de JavaPATH
. Y mientras lo hace, también puede desinstalar versiones antiguas de Java . Y recuerde que no necesita tener un JDK y un JRE.Si es así
C:\ProgramData\Oracle\Java\javapath
, elimínalo también . Oracle tenía la intención de resolver el problema de las rutas de Java que se rompen después de las actualizaciones creando un enlace simbólico que siempre apunte a la última instalación de Java. Desafortunadamente, a menudo termina apuntando a la ubicación incorrecta o simplemente no funciona . Es mejor eliminar esta entrada y administrar manualmente la ruta de Java.Ahora también es una buena oportunidad para realizar tareas generales de limpieza
PATH
. Si tiene rutas relacionadas con el software que ya no está instalado en su PC, puede eliminarlas. También puede barajar el orden de los caminos (si le importan cosas como esas).añadir
PATH
Ahora tome la ruta de Java que encontró hace tres pasos y colóquela en el sistema
PATH
.No debería importar en qué lugar de la lista vaya su nuevo camino; colocarlo al final es una buena elección.
Si está utilizando la interfaz de usuario anterior a Windows 10, asegúrese de haber colocado los puntos y comas correctamente. Debe haber exactamente uno que separe cada ruta en la lista.
Realmente no hay mucho más que decir aquí. Simplemente agregue la ruta
PATH
y haga clic en Aceptar.Conjunto
JAVA_HOME
Mientras lo hace, también puede configurarlo
JAVA_HOME
. Esta es otra variable de entorno que también debe contener la ruta de Java. Muchos programas Java y no Java, incluidos los populares sistemas de compilación Java Maven y Gradle , arrojarán errores si no se configuran correctamente.Si
JAVA_HOME
no existe, créelo como una nueva variable de entorno del sistema. Ajústelo a la ruta del directorio Java sin elbin/
directorio, es decirC:\Program Files\Java\jdkxxxx\
.Recuerde editar también
JAVA_HOME
después de actualizar Java.Cerrar y volver a abrir el símbolo del sistema
Aunque ha modificado
PATH
, todos los programas en ejecución, incluido cmd, solo ven los antiguosPATH
. Esto se debe a que la lista de todas las variables de entorno solo se copia en un programa cuando comienza a ejecutarse; a partir de entonces, solo consulta la copia en caché.No hay una buena manera de actualizar las variables de entorno de cmd , así que simplemente cierre el símbolo del sistema y ábralo nuevamente. Si está utilizando un IDE, ciérrelo y vuelva a abrirlo también.
Ver también
fuente
intente esto ... yo también lo tuve pero ahora se resolvió en XP ...
fuente
Escribiste mal el
set
comando, perdiste la barra invertida despuésC:
. Debería ser:fuente
C:\Program Files (x86)\Java\jdk1.7.0
? Si es así, ¿qué sucede si lo hacescd C:\Program Files (x86)\Java\jdk1.7.0\bin
y luegojavac -version
?Ejecute lo siguiente desde el símbolo del sistema:
set Path="C:\Program Files\Java\jdk1.7.0_09\bin"
oset PATH="C:\Program Files\Java\jdk1.7.0_09\bin"
He intentado esto y funciona bien.
fuente
Si el comando java funciona y tiene problemas con javac. luego primero verifique que el archivo javac.exe del directorio bin de jdk esté allí o no. Si existe el archivo javac.exe, configúrelo
JAVA_HOME
como variable del sistema.fuente
Verifique sus variables de entorno.
En mi caso, tenía JAVA_HOME configurado en las variables del sistema , así como en las variables de mi cuenta de usuario y este último se configuró en una versión incorrecta de Java . También tuve el mismo problema con la variable Path.
Después de eliminar JAVA_HOME de las variables de mi cuenta de usuario y eliminar la ruta incorrecta de la variable Ruta, funcionó correctamente.
fuente