2011-04-12 13 views

Respuesta

1

que he estado haciendo lo mismo ..

public String compile() 
     { 
      String log=""; 
      try { 
       String s= null; 
       //change this string to your compilers location 
      Process p = Runtime.getRuntime().exec("cmd /C \"C:\\Program Files\\CodeBlocks\\MinGW\\bin\\mingw32-g++.exe\" temp.cpp "); 

      BufferedReader stdError = new BufferedReader(new 
       InputStreamReader(p.getErrorStream())); 
      boolean error=false; 

      log+="\n....\n"; 
      while ((s = stdError.readLine()) != null) { 
       log+=s; 
       error=true; 
       log+="\n"; 
      } 
      if(error==false) log+="Compilation successful !!!"; 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
      return log; 
     } 


    public int runProgram() 
     { 
      int ret = -1; 
      try 
      {    
       Runtime rt = Runtime.getRuntime(); 
       Process proc = rt.exec("cmd.exe /c start a.exe"); 
       proc.waitFor(); 
       ret = proc.exitValue(); 
      } catch (Throwable t) 
       { 
       t.printStackTrace(); 
       return ret; 
       } 
      return ret;      
     } 

Estos son 2 funciones que se utilizan en mi MiDE primero utilizado para compilar. Cambia la dirección a la ubicación de tus compiladores. y devuelve el registro (en caso de que la compilación haya fallado) para ver los errores.

El segundo ejecuta el código compilado. Devolviendo el código de salida para verificar si finalizó correctamente.

No soy un muy buen codificador de Java. Supongo que puedes mejorar mi código mucho mejor;) .. en caso de que lo hagas, infórmame. Y también estoy buscando una respuesta en how to communicate with the created process

+0

Esto es muy básico, pero +1 para dar un buen punto de partida. –

+0

¿Qué más necesitas? – shababhsiddique

0

Probablemente va a querer utilizar Runtime.exec() para llamar al compilador respectivo. Consulte JavaDoc para obtener más información acerca de cómo tratar la salida, etc.

1

En general, querrá ejecutar un Process que ejecute el programa externo (primero el compilador y luego el binario compilado en su caso)), usando Runtime.getRuntime().exec() o ProcessBuilder para engendrar el Process (ya que su compilador probablemente tome un conjunto complicado de opciones, el ProcessBuilder es probablemente una mejor opción). Esto le permitirá tomar la salida del proceso mientras se ejecuta (para que pueda monitorear la salida del compilador en busca de advertencias o errores), así como su código de retorno.

Usted puede encontrar los siguientes ejemplos útiles:

http://www.rgagnon.com/javadetails/java-0014.html

Para obtener el código de retorno de un funcionamiento Process, sólo tiene que utilizar el método waitFor(). Esto es conveniente si no le importa cualquiera de los resultados y solo desea el valor de retorno.

+0

Enlace útil con excelentes ejemplos. –

Cuestiones relacionadas