Ler Saída do CMD no JAVA

Boa tarde pessoal,
tenho uma aplicação que executa um comando no CMD, ao qual ser executado o comando ele faz leitura de um arquivo build.xml com usuario e senha e faz a conexão ao sistema Salesforce, e faz o download dos metadadas. Meu programa só passa o comando a ser executado, conforme print.


Tentei usar o processobuilder e runtime, porém nao consigo pegar a saída, exemplo:QUERIA pegar a informação de BUILD FAILED

Meu código é esse:
ProcessBuilder processBuilder = new ProcessBuilder();
String accessDiretorio = "cd " + pathANTHOME;
String setMemoriaAnt = accessDiretorio + “& SET ANT_OPTS=-Xmx1024m”;
String callAnt = setMemoriaAnt + "& CALL ant " + comandoNome;
System.out.println("diretorio " + callAnt);
processBuilder.command(“cmd.exe”, “/c”, “start”, “cmd.exe”, “/K”, callAnt);
processBuilder.redirectErrorStream(true);
Process process = processBuilder.inheritIO().start();
Já tentei usar vários exemplos da internet sem sucesso, alguem saberia me direcionar para resolver isso… Obrigado desde já.

Runtime rt = Runtime.getRuntime();
String[] commands = { "ls", "-la" };
Process proc = rt.exec(commands);

BufferedReader stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(proc.getErrorStream()));

// Read the output from the command
String s = null;

while ((s = stdInput.readLine()) != null) {
	System.out.println(s);
}

// Read any errors from the attempted command
while ((s = stdError.readLine()) != null) {
	System.out.println(s);
}

Saida:

total 32
drwxrwxr-x 5 lucas lucas 4096 jul  3  2020 .
drwxrwxr-x 8 lucas lucas 4096 abr 26 10:38 ..
-rw-rw-r-- 1 lucas lucas 1555 ago 15  2020 .classpath
-rw-rw-r-- 1 lucas lucas 1565 ago 15  2020 pom.xml
-rw-rw-r-- 1 lucas lucas  543 fev 12  2020 .project
drwxrwxr-x 2 lucas lucas 4096 jun 19  2020 .settings
drwxrwxr-x 4 lucas lucas 4096 fev 12  2020 src
drwxrwxr-x 7 lucas lucas 4096 jul  1  2020 target

Mesmo comando no terminal:

image

1 curtida

Olá Lucas_Camara,
Tentei dessa forma com meu comando, sem sucesso também. No netbeans não aparece o resultado.
Quando eu troca essa linha para while ((s = stdInput.readLine()) == null) { // igual a nulo ae ele imprime. Não entendo o porque de não pegar.

Como teste, se vc colocar o comando num arquivo .bat (ou .sh se estiver no linux) e executar o arquivo e tentar pegar a saída conforme o exemplo que postei.

Vou tentar fazer!!Obrigado até o momento.