javac no funciona en el símbolo del sistema de windows


132

Estoy tratando de usar javacel símbolo del sistema de Windows, pero no funciona.

Después de agregar el directorio "C:\Program Files\Java\jdk1.6.0_16\bin\"al final de la PATHvariable de entorno, el javacomando funciona bien, pero el uso javacme da el siguiente error:

'javac' no se reconoce como un comando interno o externo, programa operativo o archivo por lotes.


Respuestas:


162

Si lo agregó en el panel de control mientras su símbolo del sistema estaba abierto, eso no afectará a su símbolo del sistema actual. Deberá salir y volver a abrir o simplemente hacer:

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

A modo de comprobación, ejecute:

echo %path%

desde su símbolo del sistema y háganos saber de qué se trata.

De lo contrario, asegúrese de que es un javac en ese directorio por tratar:

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

desde el símbolo del sistema. También puede decir qué ejecutable (si lo hay) se está utilizando con el comando:

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

Este es un buen truco similar a los comandos whichy / o whenceen algunos sistemas operativos tipo UNIX.


11
ah sí, todo lo que tuve que hacer fue volver a abrir el símbolo del sistema y funcionó bien, ¡gracias!
Domenic el

1
+1. El "for% i in (java.exe) do @echo% ~ $ PATH: i" me salvó el día. Solo soy un usuario ocasional de Windows y simplemente no sabía que podría haber otro java.exe oculto en c: \ windows \ system :)
david a.

1
El comando set path anterior no me funciona en Windows 7. Tuve que usar set path = "% path%; c: \ program files \ java \ jdk1.6.0_16 \ bin. ¡Eso es sin comillas! No estoy familiarizado . con el comando de las ventanas de línea, pero parece que las cotizaciones se conservan Así que tenerlos en la ruta%% hará que sea totalmente inutilizable.
user716468

@ user716468, hay una forma de GUI para hacer esto en Windows en lugar de la línea de comandos. Si está en Windows 7, simplemente escriba var en la búsqueda del menú de inicio y haga clic en Editar variables de entorno. Si está en Windows XP, haga clic con el botón derecho en Mi PC, haga clic en propiedades, vaya a la pestaña avanzada y haga clic en el botón Variables de entorno en la parte inferior. Allí puede encontrar dos cuadros de lista. Encuentre el nombre PATH en el cuadro de lista inferior y haga clic en Editar. Ahora agregue la ruta a su JDK precedida por un punto y coma. ¡Ya terminaste!
fz_salam

También hay un comando "dónde" en las líneas de comando recientes de Windows
x29a

87

El sistema operativo Windows busca programas ejecutables en el directorio actual y en los directorios enumerados en la variable de entorno PATH. Los programas de JDK (como el compilador Java javac.exe y Java runtime java.exe) residen en el directorio "\ bin" (donde denota el directorio instalado JDK, por ejemplo, C: \ Archivos de programa \ Java \ jdk1.8.0_xx). Debe incluir el directorio "\ bin" en la RUTA.

Para editar la variable de entorno PATH en Windows XP / Vista / 7/8:

  1. Panel de control ⇒ Sistema ⇒ Configuración avanzada del sistema

  2. Cambie a la pestaña "Avanzado" ⇒ Variables de entorno

  3. En "Variables del sistema", desplácese hacia abajo para seleccionar "RUTA" ⇒ Editar

((ahora lea las siguientes 3 veces antes de continuar, NO HAY QUE DESHACER ))

En el campo "Valor variable", INSERTE "c: \ Archivos de programa \ Java \ jdk1.8.0_xx \ bin" (¡Reemplace xx con el número de actualización y VERIFIQUE que este sea el directorio binario de su JDK!) DELANTE de todos los existentes directorios, seguido de un punto y coma (;) que separa el directorio binario del JDK del resto de los directorios existentes. NO BORRE ninguna entrada existente; de lo contrario, algunas aplicaciones existentes pueden no ejecutarse.

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

Captura de pantalla


Para el Paso 4. Descubrí que tenía que seleccionar no jre <yournumber>, sino jdk <yournumber>. Entonces todo lo demás funcionó bien.
Morgan Kenyon

¡Aseado y claro! La mejor respuesta. Trabajó para mi.
M_R_K

En mi caso, para el paso 4, abrí jdk. En esencia, tuve esto para PATH: C: \ Archivos de programa \ Java \ jdk1.7.0_67 \ bin. javac.exe no estaba en el jre sino en el jdk.
sedeh

Funciona para mí :)
RAJESH KUMAR ARUMUGAM

34

Después de un largo Google, llegué a saber que javac.exe estará dentro de JDK (C: \ Archivos de programa \ Java \ jdk (número de versión) \ bin) no dentro de JRE (C: \ Archivos de programa (x86) \ Java \ jre7 \ bin) "JRE no viene con un compilador. Es (JRE) simplemente un entorno de ejecución de Java. Lo que necesita es el kit de desarrollo de Java". para usar el compilador javac

javac no funcionará si está apuntando bin dentro de jre

Para usar javac en cmd, JDK debe estar instalado en su sistema ...

Para ruta javac

ruta = C: \ Archivos de programa (x86) \ Java \ jre7 \ bin esto está mal

ruta = C: \ Archivos de programa \ Java \ jdk (número de versión) \ bin esto es correcto

Asegúrese de que "javac.exe" esté dentro de su "C: \ Archivos de programa \ Java \ jdk (número de versión) \ bin"

No te confundas con JRE y JDK, ambos son totalmente diferentes

si no tienes JDK, por favor descarga desde este enlace

https://jdk.java.net/

o

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

hilo de referencia para JDK VS JRE ¿Cuál es la diferencia entre JDK y JRE?


6

Sé que este puede no ser su error específico, pero una vez tuve un espacio inicial en mi camino y Java funcionaría, pero javac no.

Por lo que vale, ofrezco el sabio consejo: "Examina tu camino de cerca".


5

Pruebe las soluciones aquí: http://techdem.centerkey.com/2009/05/javahome-command-script.html

Estos cambios son mucho más robustos, como cuando actualiza JDK o JRE, ya que no hay una ruta codificada.

La solución rápida (si no quieres leer el blog) es

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

Luego puede agregar estas líneas a un script de inicio / inicio de sesión.


2
Para invocar javac así tuve que usar "set PATH =% PATH%;% JAVA_HOME% \ bin" (observe el \ bin agregado).
user31389

4

Solo tenía que hacer esto para que esto funcionara en Windows 7 64.

Abra un símbolo del sistema (cmd.exe) y escriba:

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

Asegúrese de volver a abrir todo el símbolo del sistema en ejecución de Windows para actualizar también la variable de entorno.


1
Supongo que desarmar el classpath es mejor aquí. Yo no usaría la variable CLASSPATH, especialmente no en Windows donde es global y afecta a varios JRE ...
Eckes

4

Bien, este no puede ser el caso siempre, pero muchos de nosotros hemos cometido este error en el pasado y pocos de ellos aún no lo saben, es decir, cada vez que agrega una ruta (cualquier ruta) de cualquier variable de entorno, usted es probable que golpee la barra espaciadora justo después del "punto y coma" (como lo haría normalmente, después del "punto" mientras escribe en un editor).

Esto creará un espacio inicial en la ruta, por ejemplo, "C: \ Archivos de programa \ Java \ jdk1.6.0 \ bin" y, por lo tanto, el sistema no encontrará "javac.exe".


2

Cambie la carpeta "jdk1.7.0_45" "jdk1_7_0_60" y actualice la ruta en el entorno de Windows. De lo contrario, la ruta ignora el punto en el frente que representa el archivo oculto y, por lo tanto, la carpeta no se muestra en las cadenas de RUTA.


0

"; C: \ Archivos de programa \ Java \ jdk1.6.0 \ bin" en algún momento puede olvidar poner punto y coma en la última ruta existente.


0

Me enfrenté exactamente al mismo problema que Java funcionaría pero javac no funcionaría en un indicador de cmd en Windows 8.

El problema ocurrió porque olvidé eliminarlo '>'al final del nombre de la ruta, es decir, era así:

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

donde se suponía que debía ser así:

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

0

La ruta solo se establecerá para la cuenta de administrador. Por lo tanto, es importante iniciar el símbolo del sistema como administrador, si aún no lo ha hecho.


0

Asegúrese de no permitir espacios (espacio en blanco) entre rutas en la variable Ruta. Mi problema era que tenía espacio en blanco y creo que Windows lo trató como un NULL y no leyó mi camino para Java.


0

Estaba teniendo el mismo problema publicado en este título. Java funcionaría, pero javacno en el símbolo del sistema de Windows ( cmd.exe).

Para mí, era simplemente que había colocado un espacio al agregar C:\Program Files\Java\jdk1.8.0\binal final de mi %PATH%variable de entorno.
Elimine el espacio entre la ;y la siguiente ruta de archivo.


0

Aprecio que esta sea una vieja pregunta ahora, pero mi solución no fue una respuesta aquí, así que publíquela en caso de que alguien más intente todo lo demás.

En mi caso, una instalación anterior de Java JRE (en ProgramData / Oracle / Java) tenía una variable de ruta en la parte superior de mi lista de variables de ruta. El contenido de esa ruta "Oracle" tenía un java.exe pero no un javac.exe. Agregué mi ruta JDK completa a la parte superior de la lista de variables de ruta, por delante de la "Oracle", y luego recogió javac.exe y java.


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

esta solución me funcionó


Sugeriría agregar más anotaciones a su respuesta directamente en lugar de simplemente proporcionar un enlace: el enlace puede romperse. Saludos cordiales
YakovL

-3

Cuando intenté hacer que .java to .class el comando Javac no funcionara. Lo hice funcionar yendo a C: \ Archivos de programa (x86) \ Java \ jdk1.7.0_04 \ bin y cuando estaba en ese directorio escribí Javac.exe C \ Test \ test.java e hizo la clase con eso táctica. Prueba eso.


-7

Póngalo como "C: \ Archivos de programa \ Java \ jdk1.6.0_16 \ bin". Retire la barra invertida, funcionará


2
No creo que sea correcto. Puedo configurar mi ruta para que no sea más que "C: \ Archivos de programa \ Java \ jdk1.6.0_16 \ bin \" (con barra inclinada final) y aún funciona bien.
paxdiablo 05 de
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.