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.
Como não consegue capturar o final do processo?
sua instrução: int exitVal = proc.waitFor();
Não retorna um valor ou exception??? fica travada lá??? ou retorna imediatamente??? :?
Estranho, se fica travado, significa que o comando ainda está sendo executado :?
mas vc disse que o comando é executado com sucesso, só que o programa não libera a thread…
se vc abrir um prompt e digitar o mesmo comando que escreveu no código do programa, ele executa normalmente?
quero dizer, se vc por um break point na linha do Runtime.getRuntime().exec() lá
e copiar o valor da variável comando para um prompt e tentar executar, ele roda numa boa ou fica demorando tambem?
Dump file set for SEVEN.SYS_EXPORT_SCHEMA_03 is:
F:\BACKUP_AUTOMATIZADO\BACKUP_2012-04-30.DMP
Job “SEVEN”.“SYS_EXPORT_SCHEMA_03” successfully completed at 17:19:32
Faz um ultimo teste ai para verificar se o problema é mesmo monitorar fim de um process que executa um comando em um computador remoto
cria um arquivo batch: teste.bat
echo "Olá, apenas teste" ou qualquer outra coisa
e salva na maquina remota em: \BAHIA\Oracle\product\11.2.0\dbhome_1\bin
se for linux, cria um .sh de teste mesmo. (mas lembre de por a barra do linux em vez da barra invertida do windows)
ai tenta executar o comando:
[code] Process proc = Runtime.getRuntime().exec("\\BAHIA\Oracle\product\11.2.0\dbhome_1\bin\teste.bat");
int exitVal = proc.waitFor();