[ad#texto]
Tenho visto várias pessoas necessitando de uma forma de executar comandos de DOS ou via Terminal (Linux) a partir de aplicações Java, e além da execução capturar se o mesmo foi executado com erro ou sucesso e se possível o seu retorno.
Isto é bem simples de ser implementado em Java, veja o código abaixo:
public class ExecComando { public static void executar(java.lang.String scriptExec, java.lang.String typeCommand, java.lang.String command){ String[] finalCommand; finalCommand = new String[3]; finalCommand[0] = scriptExec; finalCommand[1] = typeCommand; finalCommand[2] = command; Process proc; String sucesso = "", erro = "", escuta; try{ proc = Runtime.getRuntime().exec(finalCommand); proc.waitFor(); BufferedReader inputSucesso = new BufferedReader(new InputStreamReader(proc.getInputStream())); BufferedReader inputErro = new BufferedReader(new InputStreamReader(proc.getErrorStream())); while ((escuta = inputSucesso.readLine()) != null) { sucesso += escuta + "\n"; } inputSucesso.close(); while ((escuta = inputErro.readLine()) != null) { erro += escuta + "\n"; } inputErro.close(); if(!sucesso.equals("")){ System.out.println("Sucesso!"); System.out.println(sucesso); }else if(!erro.equals("")){ System.out.println("Erro!"); System.out.println(erro); } }catch (IOException ex) { ex.printStackTrace(); }catch (InterruptedException ie){ ie.printStackTrace(); } } } |
O que este bloco de código Java faz?
Basicamente o método executar() recebe como parâmetros o terminal e o comando a ser executado, assim ele abre um processo de RunTime que vai de fato invocar o terminal e executar o comando para após feito isso ele irá capturar o InputStream em caso de sucesso ou erro e depois irá ler e converte-los em um String para finalmente ser impressa no console.
O próprio código Java é autoexplicativo e bem simples de ser estudado e assimilado.
Para executa-lo, basta acionar o método da seguinte forma:
ExecComando.executar("cmd.exe", "/C", "dir c:"); |
Em tempo, variações deste código Java estão espalhadas pela internet, mas se você executar um comando Java válido, como por exemplo java –version, será retornado um erro e o descrito da execução indicando que o comando foi executado com sucesso, o que de fato ocorre, isto é uma característica que pode te atrapalhar, alguém sabe a solução para ela?
Faça o teste e execute o comando java –version para ver o resultado.
No próximo post irei colocar a solução para esta questão, é tão simples como o próprio código que mostrei aqui.