Compilar y ejecutar JAVA desde Sublime Text

En esta entrada veremos como configurar un llamado Build System de Sublime Text para que al presionar ctrl + b se compile y ejecute nuestra aplicación en JAVA.

Lo primero que debemos hacer es iniciar Sublime Text, una vez lo hallamos hecho, vamos a Tools -> Build System -> New Build System... Esto abrirá un pequeño archivo con unas lineas escritas en JSON, de modo que debemos copiar el siguiente código y pegarlo en este archivo.
//Codigo valido para Windows y Linux
{
    "cmd": ["javac ${file_name} && java ${file_base_name}"],
    "shell": true
}
Cuando lo hallamos hecho, guardamos dicho archivo en la carpeta donde nos sugiere Sublime Text, y le ponemos un nombre descriptivo como por ejemplo ejecutarJava.sublime-build, ten cuidado que la extensión del archivo sea .sublime-build.

Y con eso ya hemos terminado, para compilar y ejecutar nuestros programas en JAVA tan solo debes ir a Tools -> Build System y elegir el nombre del archivo que has modificado antes, en mi caso ejecutarJava. A partir de ahora, podremos compilar y ejecutar nuestros programas en JAVA presionando ctrl + b.

Comentarios

  1. Tienes algo similar para C/C++?...

    ResponderEliminar
  2. Me gustaría que publicaran unas ilustraciones para comprender mejor, porque la mayoría no se sabe como, donde guardarlo de manera correcta.. de antemano gracias y por cierto muy buena página, sigue así.. saludos

    ResponderEliminar
    Respuestas
    1. En algunos tutoriales he colocado pantallazos pero en este no me pareció necesario. De todas formas la duda que tienes, está explicada en la entrada, ya que cuando intentas guardar un "new Build System", este ya te aparece en la dirección correcta, solo debes cambiar el nombre "untitled.sublime-build" por otro más descriptivo como por ejemplo "ejecutarJava.sublime-build", haces click en guardar y listo.

      Espero que te sea de ayuda, y si tienes alguna otra duda o sigues sin poder compilar y ejecutar tus programas en JAVA con sublime text, no dudes en comentar e intentaré ayudarte. ;)

      Eliminar
    2. pues ami me toco configurarlo para q me sirviera por q me aparecia q no se podia

      Eliminar
  3. Tengo instalado VS 2010, cómo procedo para compilar y correr C#?

    ResponderEliminar
    Respuestas
    1. En el Sublime Text, programas sencillos, saludos desde México.

      Eliminar
    2. Acabo de hacer una nueva entrada sobre eso, espero que te sea de ayuda.
      Saludos.
      Compilar y ejecutar C# desde Sublime Text

      Eliminar
  4. Sabes si en la consola del sublime se admite entrada de datos utilizando Scanner ? Antemano Gracias por la respuesta.

    ResponderEliminar
    Respuestas
    1. Pues la verdad es que no se puede, no tiene mucho sentido que implementen una consola sublime text, y solo sirva para mostrar datos, pero bueno. La única solución es hacer que sublime text abra un CMD.exe o un terminal según tu SO, algo que puedes hacer con las entradas que subí hace un tiempo:
      Ejecutar en cmd.exe desde Sublime Text
      Ejecutar en Terminal linux desde Sublime Text

      Saludos y suerte, si tienes alguna otra cuestión no dudes en comentar. ;)

      Eliminar
  5. disculpa espero me puedas ayudar, lo que pasa es que ya configure todo y aun asi no me corre el codigo, solo aparece la señal abajo de "building" y despues de unos segundos desaparece dejando la consola en blanco, ya configure para que pudiera ejecutar en el cmd javac pero aun asi solo me aparece la consola en blanco del sublime al aplastar Control+B, ya cree la .sublime-build y la seleccione para que utilizara esa pero sigue igual

    ResponderEliminar
    Respuestas
    1. Pues acabo de repasar las entradas y están bien, lo primero que debes tener es el directorio \bin del JDK en la variable PATH, para ello puedes probar abriendo un CMD y escribiendo java o javac. Lo siguiente es hacer el sublime-build que haría que la salida del programa aparezca en la consola de sublime text, y por último cambiar la línea del archivo exec.py de sublime para que ejecute un CMD y aparezca ahí la salida del programa. También ten en cuenta que esto es para Windows. Al final te pongo los enlaces para hacer todo lo que te he comentado en orden, por si te ha faltado algo por hacer.

      Un saludo y suerte, si sigues con problemas, vuelve a comentar a ver si conseguimos solventar el problema. ;)

      http://ayudasprogramacionweb.blogspot.com.es/2012/11/compilar-y-ejecutar-java-en-cmd-windows.html
      http://ayudasprogramacionweb.blogspot.com.es/2012/12/ejecutar-en-cmdexe-desde-sublime-text.html

      Eliminar
    2. gracias por la ayuda, aunque sigo teniendo el mismo problema por lo menos ya me indica los errores, el siguiente link es una foto de lo que me aparece:

      http://www.flickr.com/photos/68067166@N02/8500003168/in/photostream

      la clase que trato de ejecutar es un simple print que dice hola, nose si tenga que ver con que guarde la clase en una carpeta del escritorio diferente a la por defecto por que no recuerdo cual es o si tiene que ver que actualize el jdk, pero eso es lo que e movido mas recientemente y cambie de la version 64 bits a la de 32 cuando en realidad es de 64 la mia, no creo que tenga que ver pero igual lo comento.

      Gracias de antemano por tu ayuda

      Eliminar
    3. Pues ese error aparece cuando intentas ejecutar un código java no soportado por tu máquina virtual, ya sea por que necesites una versión anterior o posterior. Te recomiendo que abras el CMD, e intentes compilar y ejecutar tu archivo Java en el, para ver si funciona correctamente. Para ello en la siguiente entrada lo explico todo al detalle.
      Compilar y ejecutar JAVA en CMD
      Si continua el mismo error, ejecuta en el CMD "java -version" y "javac -version" y coméntame que devuelven estos comandos y así descartar una versión incorrecta del JDK.

      Mucha suerte!

      Eliminar
  6. al intentar compilar aparece :

    Compilador de Microsoft (R) Visual C# 2010, versión 4.0.30319.1
    (C) Microsoft Corporation. Reservados todos los derechos.

    fatal error CS2007: Opción no reconocida: '/nologo" "'
    [Finished in 0.3s with exit code 1]

    ResponderEliminar
    Respuestas
    1. Pues puede ser que tu versión de .NET sea anterior a la mía, prueba a quitar en el .sublime-build la opcion "/nologo", esta opción no es importante, solo sirve para que no salga una frase sobre el copyright de Microsoft en la compilación.

      Saludos.

      Eliminar
  7. Hola, de antemano gracias por compartir esta entrada. Realice tus pasos y todo bien. Luego creé un pequeño código donde imprima un dato String que he capturado por un JOptionPane y luego imprimirlo por System.out y también lo probe con un JOption pero al presionar Control+b solo abre un campo en la parte inferior pero no corre.

    ¿Que puede ser lo que le esté faltando?

    Gracias

    ResponderEliminar
  8. se puede hacer algo parecido para python ?

    ResponderEliminar
  9. #Java algún problema con el package del ST2, #error #NoSuchElementException p/lectura por teclado p/String o int por consola funciona :-(

    ResponderEliminar
    Respuestas
    1. ¿Cual es el error que te sale? Es muy raro que no te vaya bien, ¿tu código está correcto? Si todo está bien, me huele a problema de Sublime Text, intenta reinstalarlo completamente a ver si se soluciona, no se me ocurre nada más la verdad viendo ese mensaje que me has puesto.

      Suerte

      Eliminar
  10. Hola Alejandro, lo estoy usando para muchos ejercicios (operaciones: loop, for,etc) pero en un programa para leer desde teclado y lo imprima, en consola me imprime la orden de pedido de datos y sin parar tamb imprime #NoSuchElemenetException, muchos errores de linea de programa que no tengo( ej .java 1050) y a lo ultimo la linea donde est[a el metodo nextInt(), todo esto sin parar lo da por finalizado,El mismo programa lo probe en consola linux y funciona, Estoy intentando vincularlo al jvm/jdk de mi ubuntu pero sin exito. Gracias

    ResponderEliminar
    Respuestas
    1. La consola de sublime no permite introducir datos desde teclado, para hacer el ejercicio debes hacer que tus programas se ejecuten en el cmd desde sublime, esto se hace muy facil siguiendo esta entrada

      http://ayudasprogramacionweb.blogspot.com/2012/12/ejecutar-en-cmdexe-desde-sublime-text.html

      En el cmd ya puedes introducir datos datos sin problemas, si usas linux busca mi entrada de ejecutar sublime text en terminal.

      Saludos

      Eliminar
  11. OK Alejandro, Solucionado, funciona muy bien la lectura por consola y la impresión en pantalla de resultados,

    ResponderEliminar
  12. Por favor alguien podria ayudarme, algo así para ejecutar y compilar Java en Termina y poder ingresar datos con Scanner pero para sistema Mac OS X??
    Se los agradeceria tanto, porque ya he buscado y no encuentro nada

    ResponderEliminar
  13. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  14. Saludos. Despues de realizar todos los pasos descritos, cuando presiono CTRL + B el programa hace el build y si no hay errores, muestra un mensaje, por ejemplo Finished in 0.5s pero no ejecuta las lineas de codigo, sera que eso no se puede en este editor? Intente tambien haciendo lo descrito aqui:

    http://ayudasprogramacionweb.blogspot.com.es/2012/11/compilar-y-ejecutar-java-en-cmd-windows.html
    http://ayudasprogramacionweb.blogspot.com.es/2012/12/ejecutar-en-cmdexe-desde-sublime-text.html

    ResponderEliminar
  15. no me funciona...dejare de tratar de reinventar la rueda y me quedo con el ide de netbeans

    ResponderEliminar
  16. Buen Día, seguí todo los pasos y me salta este mensaje:
    "javac" no se reconoce como un comando interno o externo,
    programa o archivo por lotes ejecutable.
    [Finished in 0.1s with exit code 1]

    Saludos, espero sus respuestas.

    ResponderEliminar
    Respuestas
    1. Tienes que tener el JDK de java instalado, una vez lo tengas, tan solo sigue los pasos de la siguiente entrada:

      http://ayudasprogramacionweb.blogspot.com.es/2012/11/compilar-y-ejecutar-java-en-cmd-windows.html

      La finalidad es hacer visible tanto java como javac desde la consola (sin tener que ir a las rutas originales) de modo que cuando sublime text ejecute javac para compilar los archivos en java, este sea encontrado por el sistema y ejecutado correctamente,

      Saludos.

      Eliminar
  17. La verdad que tengo el mismo error que tiene el amigo Ronnie no funciona. Que puede ser?

    ResponderEliminar
    Respuestas
    1. He podido comprobar que en ciertos casos (creo que en Sublime Text 3) el comando se ejecuta enteramente, incluyendo los corchetes. Por lo tanto sobran...
      Si este fuera tu caso ejecuta en la consola "javac Nombre.java && java Nombre" sin comillas y en el directorio del archivo en java (recuerda que el nombre de la clase y el del archivo deben coincidir y empezar por mayúscula) Si funciona, quita los corchetes de la linea de comando que se ejecuta en el "build system" que has creado, tal que así:

      {
      "cmd": "javac ${file_name} && java ${file_base_name}",
      "shell": true
      }

      Espero haberte ayudado.
      Saludos!!

      Eliminar
    2. MUCHAS GRACIAS! Esto me sirvio. estaba cansado de tener que abrir cmd

      Eliminar
  18. Buenas tardes, estoy iniciando la programación en Java (apuntando a Android, se que existe Android Studio!) paro lo cual estoy usando Sublime Text 2.

    Quisiera hacer seguimiento de las variables para ir viendo los cambios a medida que se ejecuta las aplicaciones de práctica y googleando encontré JDebug - A Java Debugging plugin for Sublime Text.

    Una vez instalado me pide configurar (JDebug.sublime-setting) y es allí donde entiendo cómo se debe hacer correctamente.
    Agradecería si alguien puede darme un ejemplo de configuración: a continuación la opción de configuración recomendada y luego está el ejemplo de archivo que debe llevar la configuración.
    Saludos!



    Setting up JDebug

    Setting up JDebug is very simple as it has only few settings to start with. You can copy and paste the default settings into user settings and update the following settings based on your environment.

    workingdir - You need to set your current project directory like c:/worksapce/TestService (Windows) or /home/user/abc/workspace/TestService (Linux or Ubuntu)
    commandline - Set the jdb command with arguments. If JDK/bin is not in your environment PATH then you need to specify full path to the jdb command. Also change the hostname and port in which the java application service is running and listening.
    sourcepath - The path to the source file with in the project. For ant project it usually /src/ and for maven usually /src/main/java.



    Archivo de configuración JDebug.sublime-setting:

    {
    "workingdir": "C:/Workspace/TestService",
    "commandline": "jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8849",
    "source_path_prefix": "/src/",
    "push_pop_layout": true,
    "close_views": true,
    "debug": false,

    "layout":
    {
    "cols": [0.0, 1.0],
    "rows": [0.0, 0.75, 1.0],
    "cells":
    [ // c1 r1 c2 r2
    [0, 0, 1, 1], // -> (0.00, 0.00), (1.00, 0.75)
    [0, 1, 1, 2] // -> (0.00, 0.75), (1.00, 1.00)
    ]
    },

    "breakpoint_scope": "keyword.jdb",
    "breakpoint_icon": "circle",
    "position_scope": "entity.name.class",
    "position_icon": "bookmark",
    "changed_variable_scope": "entity.name.class",
    "changed_variable_icon": "",

    "file_group": 0,
    "console_group": 1,
    "console_open": true,
    "variables_group": 1,
    "variables_open": true,
    "breakpoints_group": 1,
    "breakpoints_open": true

    }

    ResponderEliminar
  19. Gracias me ha ahorrado muchos dolores de cabeza.

    ResponderEliminar
  20. hola, me compila el programa pero no me lo ejecuta, alguien me puede ayudar? muchas gracias

    ResponderEliminar
  21. Me sirvió la técnica, para poder ejecutar programas con clojure quedó asi :

    {
    "cmd": "java -jar /ruta_al_clojure.jar/clojure-1.8.0.jar ${file_path}/${file_name}",
    "working_dir": "/ruta_al_clojure.jar/",
    "shell": true,
    "selector": "source.clojure"
    }

    ResponderEliminar
  22. oye amigo a mi no me funciona me aparece este mensaje
    ""javac HolA.java && java HolA"" no se reconoce como un comando interno o externo,
    programa o archivo por lotes ejecutable.

    ResponderEliminar
  23. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  24. Y para ruby como le hago [tengo sublime text 3]

    ResponderEliminar
    Respuestas
    1. Tan solo tendrias que usar el interprete de ruby y la variable ${file_name}.

      Eliminar
    2. Me podrías poner un ejemplo es que soy novato muy no le hallo mucho por favor

      Eliminar
    3. Si usas linux:

      {
      "cmd": ["ruby ${file_name}"],
      "shell": true
      }

      Si usas windows:

      {
      "cmd": ["c:\Ruby\22\bin\ruby.exe ${file_name}"],
      "shell": true
      }

      Ten en cuenta que esto es solo un ejemplo, y en Windows Ruby podria estar instalado en uno directorio o tener otra version distinta. Despues de instalarlo, comprueba la ruta hacia el archivo ruby.exe y utiliza esa ruta en el archivo sublime-build.

      Eliminar
  25. Perdona, soy el unico que cuando le incorporas un Scanner, para pedir el usuario que introduzca datos, al ejecutar "java"(ctrl +b), lo ejecute, escribes un ejemplo "10", se quede ahí y no haga nada? y si usas otro programa como Netbeans, si que te ejecuta después de escribir "10".

    ResponderEliminar
  26. Que tal, una pregunta, estoy tratando con python, según mi lógica es mas o menos así:
    {
    "cmd": ["python ${file_name}"],
    "shell": true
    }

    Pero al presionar ctrl+B, no se ejecuta nada. Y si, el built esta seleccionado con miPython. Podrías ayudarme.
    Saludos.

    ResponderEliminar
    Respuestas
    1. Hola Cesar, Sublime Text 3 (y posíblemente el 2) traen por defecto un build system para python, de modo que solamente necesitas seleccionar el build system "Automatic" y cuando estés editando un archivo .py, este debería ejecutarse en sublime text al presionar Ctrl+B o Tools->Build en el menú.

      Eliminar

Publicar un comentario

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

Entradas populares de este blog

Ordenar cualquier array con SORT en JAVA

Modificadores de acceso (public, protected y private) JAVA

Calcular factorial de un numero en JAVA