Saltar al contenido

leer la salida de java exec

Presta atención ya que en esta sección vas a hallar el resultado que buscas.

Solución:

Utilice getErrorStream().

BufferedReader in = new BufferedReader(new InputStreamReader(pr.getErrorStream()));

EDITAR:

Puede usar ProcessBuilder (y también leer la documentación)

ProcessBuilder   ps=new ProcessBuilder("java.exe","-version");

//From the DOC:  Initially, this property is false, meaning that the 
//standard output and error output of a subprocess are sent to two 
//separate streams
ps.redirectErrorStream(true);

Process pr = ps.start();  

BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line;
while ((line = in.readLine()) != null) 
    System.out.println(line);

pr.waitFor();
System.out.println("ok!");

in.close();
System.exit(0);

Tenga en cuenta que estamos leyendo la salida del proceso línea por línea en nuestro StringBuilder. Debido a la try-with-resources declaración no necesitamos cerrar la transmisión manualmente. El ProcessBuilder class vamos a enviar el nombre del programa y el número de argumentos a su constructor.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ProcessOutputExample

    public static void main(String[] arguments) throws IOException,
            InterruptedException
    
        System.out.println(getProcessOutput());
    

    public static String getProcessOutput() throws IOException, InterruptedException
    
        ProcessBuilder processBuilder = new ProcessBuilder("java",
                "-version");

        processBuilder.redirectErrorStream(true);

        Process process = processBuilder.start();
        StringBuilder processOutput = new StringBuilder();

        try (BufferedReader processOutputReader = new BufferedReader(
                new InputStreamReader(process.getInputStream()));)
        
            String readLine;

            while ((readLine = processOutputReader.readLine()) != null)
            
                processOutput.append(readLine + System.lineSeparator());
            

            process.waitFor();
        

        return processOutput.toString().trim();
    

Huellas dactilares:

java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

Ya tiene el objeto de proceso (nombre pr). Puede obtener el flujo de entrada, salida y error. En su caso, desea pr.getInputStream(). Lea de eso, que está conectado a la salida del proceso.

Comentarios y valoraciones del tutorial

No se te olvide difundir esta sección si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *