Problema com Process.waitFor();

0 respostas
H

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:
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
Funciona:
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

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!

Criado 10 de abril de 2008
Respostas 0
Participantes 1