Compilar y ejecutar JAVA en CMD (Windows 7)

Para aquellos que habéis utilizado algún IDE de desarrollo para JAVA, sabréis que este simplifica mucho el proceso de compilación y ejecución de nuestros programas, tan solo presionando un botón ya se crean nuestros archivos de Bytecode .class y .jar, y directamente se ejecutan en la consola del IDE.

Yo empecé con JAVA de esta manera, con el IDE Netbeans y pasado un tiempo, decidí pasarme a programar con Notepad++ para no tener las cosas tan fáciles y aprenderme de memoria por lo menos las clases más importantes.


Sea como fuere, tuve que empezar a compilar y ejecutar mis programas en la consola CMD de Windows, algo muy sencillo, pero que me acostó aprender ya que no encontraba información por ningún lado de cómo hacerlo. Lo primero que debemos hacer es compilar nuestro archivo .java, para convertirlo en código reconocible por la máquina virtual de JAVA, para ello utilizaremos el comando javac.

NOTA IMPORTANTE
Si al introducir javac en vuestro CMD, este no lo reconoce, debemos modificar la variable de entorno del sistema Path de la siguiente manera:
  • En el panel de control accedemos a Sistema, y en la parte izquierda de la ventana que aparecerá pinchamos en Configuración avanzada del sistema.

  • En la nueva ventanita, pinchamos en Variables de entorno… que está en la parte inferior. 
  • En la parte de debajo de la nueva ventana, en la sección Variables del sistema, buscamos y hacemos doble click en la variable llamada Path, para editarla. 
  • Por último solo nos queda añadir al final del valor de la variable, un punto y coma y la ruta de vuestra carpeta \bin que está dentro del directorio del JDK, y este a su vez suele estar en C:\archivos de programa o C:\program files como veis que es mi caso.

Una vez hecho esto, aceptamos todas las ventanitas y si teníamos un CMD abierto, lo cerramos y volvemos a abrir otro, de esta manera al introducir javac, este debería responder, puedes probarlo con el comando javac –version, el cual debería devolver la versión instalada de java.
FIN NOTA

Con los comandos del JDK operativos, procedemos a compilar nuestro archivo .java introduciendo el comando javac NombreArchivo.java, de esta manera, si el programa está bien, y no nos sale ningún error de compilación, se generará nuestro archivo .class que es nuestro programa en java compilado.

Por último solo nos queda ejecutar nuestro programita con el comando java NombreClase, ten en cuenta que el nombre de la clase debe coincidir con el nombre del archivo, que ambos deben empezar por una letra mayúscula y que al ejecutar el programa con el comando java, NO se pone la extensión del archivo, tan solo el nombre de la clase pública que contiene el archivo .class, que será igual a su nombre.

Compilar y ejecutar el programa Prueba.java

Comentarios

  1. Muy útil, sobre todo la nota, ya que mi CMD no cargaba el comando "javac". Sigue así! :D

    ResponderEliminar
  2. Me sirvió de mucho. Buen aporte

    ResponderEliminar
  3. Muy buen aporte. no me cargaba el comando javac

    ResponderEliminar
  4. Muy buen aporte. no me cargaba el comando javac

    ResponderEliminar
  5. graciassssssssssss!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! aunk no fuiste especifico en que debia copiar toda la direccion me costo eso jiji :p

    ResponderEliminar
  6. Hola, que pasa si no compilo desde la carpeta c:\Users\alejandro\Desktop, si no que compilo desde la carpeta c:\ por ejemplo, esto se puede, porque lo he intentado con el -cp pero no me deja.

    gracias!!!!

    ResponderEliminar
    Respuestas
    1. Pues si has configurado bien la variable de entorno, no debería de darte problemas, ya que con esto da igual en que carpeta estés, al introducir "javac -version" por ejemplo, el sistema debe de reconocer el comando y devolver la versión del jdk instalada.

      Eso si, tienes que respetar si estás utilizando algún package en tu aplicación, y la ruta de la clase que contiene el método main. Por ejemplo, si tu fichero .java esta en C:\ y no usas packages, pues te vas a ese directorio con:
      cd c:\
      Y seguidamente ya podrás compilar y ejecutar tu aplicación con:
      javac Archivo.java
      java Archivo

      Eliminar
  7. muchas gracias a mi me funciona java -jar Nombre.clase (nombre archivo con extencion) pero me sirbio aprender a editar el servicio para ejecutar los comandos

    ResponderEliminar
  8. excelente aporte me funcionó perfecto, gracias.

    ResponderEliminar
  9. Muchas gracias por este post. Estaba volviéndome loco preguntándome por qué salía el error "No se ha encontrado o cargado la clase principal" y resulta que lo único que sobraba era el CLASSPATH (no sé por qué en otras webs recomiendan crear esa variable de entorno) y la extensión del archivo XD

    ResponderEliminar
    Respuestas
    1. Tuve el mismo problema "error: no se ha encontrado o cargado la clase principal ..." y desinstale los JDKs y todo pero nada, el error seguia ... Este comentario tiene la razon xD ... borre el CLASSPATH de las variables de entorno del sistema y problema resuelto. Gracias!

      Eliminar
    2. Yo no tengo la variable CLASSPATH, pero aún así me sale el "error: no se ha encontrado o cargado la clase principal ...".

      Eliminar
  10. Pocas veces uno se encuentra con blogs muy bien explicados.
    Gracias Alejandro Santiago.

    ResponderEliminar
  11. gracias por el aporte me ayudó mucho
    aprecio este trabajo...

    ResponderEliminar
  12. Estmado, que pasa si quiero usar una clase de esa forma pero necesito usar clases de un paquete, ¿cómo los agrego al .class?

    ResponderEliminar
  13. EXELENTE ESTO ME SIRVIO DE MUCHO PORQUE NECESITABA UN PROGRAMA LIGERO ARA PODER CODIFICAR Y PARA COMPILAR MI CODIGO MUCHISIMAS GRACIAS.
    y UNA PREGUNTA MAS SABES COMO HARIAS PARA COMPILAR UN *.vb SON LOS DE VISUAL BASIC

    ResponderEliminar
    Respuestas
    1. Nunca he programado en Visual Basic de modo que no te puedo ayudar personalmente, en cambio he encontrado información al respecto de como compilar nuestros archivos .vb desde la linea de comandos utilizando el compilador de Visual Basic, espero que te sea de ayuda:

      http://stackoverflow.com/questions/7215273/is-there-a-vb-net-compiler-to-download
      http://nickmasao.wordpress.com/2008/08/12/running-a-vbnet-program-with-command-line-arguments/
      http://msdn.microsoft.com/en-us/library/4dehewf5.aspx

      En el primer enlace comentan donde suele estar situado el compilador.

      En el segundo se explica como añadir la ruta del compilador como una variable de entorno en Windows, de modo que cuando en el CMD utilices vbc se llame al compilador y no tengas que utilizar la ruta real del compilador cada vez que quieras utilizarlo.

      Y en el tercero como utilizar el compilador para producir de un archivo a.vb un archivo .exe, .dll y demás, en tu caso tu utilizarías la tercera fila de la columna ( vbc /out:My.exe File.vb ), de modo que crearías tu ejecutable My.exe desde tu código fuente File.vb

      Siento no poder serte de más ayuda, saludos.

      Eliminar
  14. Hola como compilo archivos de netbeans en cmd pero que tengan clases

    ResponderEliminar
    Respuestas
    1. Realmente no es necesario ejecutar programas en cmd si usas Netbeans ya que este cuenta con herramientas para compilar y ejecutar todo tipo de programas correctamente, incluso su consola admite entrada de datos por teclado.

      Saludos

      Eliminar
  15. hola, espero me puedas ayudar, que sucede cuando se programa orientado a objetos y hay muchas class, luego cuando se trata de ejecutar como normalmente se hace (java "nombre del archivo class") lanza errores por la referencia que se hacen a otras clases, o si se ejecuta un clase que no es el main, lanza obiamente el error de que no encontro el main. creo ya sabes a que me refiero, que puedo hacer?

    ResponderEliminar
    Respuestas
    1. todo esto sin IDE, solo bloc y cmd xd

      Eliminar
    2. Si no estás utilizando ningún package, tan solo debes de compilar con javac la clase que contiene el main, y ejecutarlo luego con java ya sin extensión, un ejemplo puede ser:

      javac Main.java
      java Main

      La primera instrucción compila nuestro programa (Si Main.java utiliza otras clases, estas se compilarán automáticamente), la segunda instrucción ejecutará el fichero Main.class creado teniendo en cuenta que se omite el .class de modo que solo queda en java Main.

      Si utilizas un package llamado prueba por ejemplo, se haría así:

      javac prueba/Main.java
      java prueba.Main

      Saludos

      Eliminar
    3. También había tenido esa duda, yo compilaba los archivos de cada clase y siempre me resultaba error.

      Gracias por ese aporte.

      Eliminar
  16. graaaaaaaaaaaaaaaaaaaciiiiiiiiiiiiiasssssssssss 1 semana buscando la solución....

    ResponderEliminar
  17. esta es la solución para cuando quieras ejecutar un . jar desde otra aplicación en mi caso soluciono la de un programa realizado en visual basic que ejecutaba un .jar muchas gracias :)

    ResponderEliminar
  18. ¿COMO HAGO? para que al momento de compilar un .java, este me reconozca librerias externas que he importado, es decir, archivos .jar que no vienen en el core de Java al momento de Instalarlo.

    ResponderEliminar
  19. Trate de compilar mi programa desde cmd y me manda muchos errores, el punto esta en que si lo ejecuto directamente desde Java me lo ejecuta sin ningún problema. Alguien puede decirme a que se debe?

    ResponderEliminar
  20. GRACIAS MIL!!!!!!!!!!!! Te amo! ;-D

    ResponderEliminar
  21. Gracias, luego de buscar por 1 semana al fin pude :)

    ResponderEliminar
  22. Hola amigo, tengo una duda, en mi variable de sistema Path me aparece con este valor: C:\PROGRA~2\Borland\CBUILD~1\Bin;C:\PROGRA~2\Borland\CBUILD~1\Projects\Bpl;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files (x86)\Toshiba\Bluetooth Toshiba Stack\sys\;C:\Program Files (x86)\Toshiba\Bluetooth Toshiba Stack\sys\x64\
    Esta bien? donde debo poner el "punto y coma" faltante?

    ResponderEliminar
  23. Desde Linux también.
    https://www.youtube.com/watch?v=CwbcQVXwvjc

    ResponderEliminar
  24. Diaaaaaaaaaaas Mi problema era al ejecutar mi fichero "PROG01_programa1.java" lo ponía sin mayúsculas!! Mil gracias! LL

    ResponderEliminar
  25. Muy bueno, me quedo claro con esta explicación.

    ResponderEliminar
  26. muchas gracias!! me ayudaste bastante! excelente explicación!

    ResponderEliminar

Publicar un comentario

Si tenéis alguna duda o sugerencia, no dudéis en comentar. ;)

Entradas populares de este blog

Calcular factorial de un numero en JAVA

Ordenar cualquier array con SORT en JAVA

Modificadores de acceso (public, protected y private) JAVA