Extraer mensajes de la Consola

RaulS
05 de Abril del 2004
Bien hace poco me comía la hoya para ver como ejecutaba un comando linux
de consola desde Java, bien pues bien gracias a vuestra ayuda conseguí
hacerlo, pero bien os explico, si ejecuto desde java con Runtime una
aplicación por ejemplo lanzo Tomcat,

....
....
FileOutputStream mensaje = new FileOutputStream(fichero);// Creo un Strem
para imprimir la salida de consola en un file
PrintStream eps = new PrintStream(mensaje);
Runtime.exec(bash);
proceso = Runtime.exec(/usr/local/tomcat/bin/startup.sh) ;//Lanzo Tomcat
desde Java
System.setIn(proceso.getOutputStream());//Capto los mensajes del proceso si
es error lo capta si no es así ná de ná! el muy..

el caso es que el Stream lo imprimo en un archivo, bien pues si, por algún
motivo me sale una excepción (por Ej. cambio el nombre del archivo sttarup)
el error si que se imprime en el archivo, sin embargo si no se produce
ninguna excepción ni error, no me sale nada, yo esperaba que me saliera el
mismo mensaje que sale en una consola cuando lanzo Tomcat, ósea lo que busco
es como coger toda la información que muestra una consola y plasmarlo en el
archivo o por un TextArea).

Después de darle muchas vueltas creo que se debe a que cuando
Runtime ejecuta la sentencia y esta no da ningún tipo de error o excepción,
el sistema pasa a ejecutar Tomcat en un proceso diferente por tanto no capta
los mensajes que emite, me equivoco?? como puedo captar esos mensajes de
consola para manejarlos a mi manera??

Un saludo y gracias por adelantado.



chuidiang
05 de Abril del 2004
Cuando lanzas una aplicacion externa desde java con Runtime.exec(), la salida standard y de error de esa aplicacion se redirigen a tu aplicacion java.

Con Process.getErrorStream() y Process.getErrorStream() obtienes los Streams de estas salidas y debes leer de ellas y escribir en pantalla (o tirar a la basura o lo que quieras).

Se bueno.