Olá pessoal, é o seguinte:
Tenho uma aplicação onde faço uso do Runtime.exec que vai chamar um programa externo que atualiza uma base de dados.
O problema é que se eu não faço uso das Dlls do windows meu programa externo trava e meu process.waitFor(); não funciona.
Vou colocar aqui um exemplo de quando funciona e quando dá errado.
Não funciona:
[code]public class testing {
public static void main(String[] args) {
Runtime r = Runtime.getRuntime();
System.out.println("Calling Run ");
try{
String x = "calc";
Process p = r.exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+x );
System.out.println("hi");
p.waitFor();
System.out.println("Process terminated !!!");
}//try
catch(Exception e)
{
System.out.println("Exception occurred :"+e);
}
}//main
}//class[/code]
Funciona:[code]public class testing {
public static void main(String[] args) {
Runtime r = Runtime.getRuntime();
System.out.println("Calling Run ");
try{
String x = "calc";
Process p = r.exec(x);
System.out.println("hi");
p.waitFor();
System.out.println("Process terminated !!!");
}//try
catch(Exception e)
{
System.out.println("Exception occurred :"+e);
}
}//main
}//class[/code]
Quando eu utilizo as dlls, a mensagem de Process terminated aparece antes que eu feche o programa, sem as dlls, a mensagem só aparece quando eu o fecho.
Só que na minha aplicação, se eu não ponho as dlls ela abre o processo no TaskManager mas ele fica travado, quando ponho as dlls, meu programa que atualiza funciona, mas o meu programa em java não espera ele terminar.
Alguém sabe a razão disso acontecer ou um jeito do process.waitFor() esperar o processo que eu quero?
Abraço!