Boa tarde!
Eu possuo um método no qual recebo como parâmetro um comando de prompt e uma String[] contendo as variáveis de ambiente para a execução de tal comando.
O método funciona normalmente quando chamo ele para um comando local e sem variáveis de ambiente, como, por exemplo, um update no SVN. Ele executa e eu consigo saber quando ele foi concluído para assim poder incrementar uma progressbar.
No entanto, quando tento executar um comando que depende de um executável em um computador remoto, o mesmo faz o que tem que fazer mas eu não consigo capturar o final do processo. Alguém sabe como devo proceder?
Abaixo segue o código do método e em seguida duas chamadas, sendo a primeira a que funciona e a segunda que não consigo monitorar.
Desde já agradeço.
Este é o método
private Boolean executaComando(String comando, String[] variaveisDeAmbiente) throws IOException, InterruptedException {
Process proc = Runtime.getRuntime().exec(comando, variaveisDeAmbiente);
int exitVal = proc.waitFor();
if (exitVal == 0) {
return true;
} else {
return false;
}
}
Esta chamada consegue ser executada e tem um retorno quando termina.
comando = "TortoiseProc.exe /command:update /path:\"" + txtCaminhoDoProjetoPortalSeven + "\" /closeonend:1";
if (executaComando(comando, null)) {
current = 15;
}
Esta chamada consegue ser executada mas não consigo saber quando terminou.
String[] variaveisDeAmbiente =
{"ORACLE_HOME=\\\\BAHIA\\Oracle\\product\\11.2.0\\dbhome_1", "TNS_ADMIN="+System.getProperty("user.dir")};
comando = "\\\\BAHIA\\Oracle\\product\\11.2.0\\dbhome_1\\bin\\expdp.exe SEVEN/SEVEN@AWORKSDB "+
"DIRECTORY=BACKUP_AUTOMATIZADO_DIR DUMPFILE=BACKUP_"+formatador.format(data)+".DMP COMPRESSION=ALL "+
"logfile=BACKUP_"+formatador.format(data)+".LOG SCHEMAS=SEVEN";
if (executaComando(comando, variaveisDeAmbiente)) {
current = 50;
}
