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:

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.