Externer Prozess terminiert nicht

smathedark

Mitglied
Hallo,

ich habe das Problem, dass ein externer Prozess nicht Terminiert.
Ich starte diesen Prozess über einen Prozessbuilder, im Taskmanager sehen ich das der Prozess anläuft und dann steht. Wenn ich diesen Prozess mit den selben Aufrufstring in einem Konsolenfenster starte läuft er problemlos durch.
Ich habe festgestellt, das der Prozess auch übeerr der Prozessbuilder manchmal Terminiert, wenn ich ein Read auf dem Inputstream ausführe.
Da der Prozess in der Konsole immer fehlerfrei läuft schein es an dem Aufruf über den Prozessbuilder zu liegen ich habe aber keine Ahnung warum.
Dazu sollte ich noch sagen das ich sehr viele externe Prozesse mit meinem Javaprogramm starte und nur dieser hat das Problem. Daher würde ich eigentlich sagen der Prozess hat ne Macke aber da er in der Konsole läuft ... Naja ich weiss nicht weiter hat einer von euch ne Idee.
Hier mal mein Codebeispiel.
Code:
private Process process;
	String[] s={"C:\\Entwicklung\\Testumgebung\\workspace\\Testumgebung/Files    
                             \Datenbankanbindung.exe", "./Database/Config/DatabaseConf.ini",  
                             "./Log/TmpModuleoutput.txt", "1", "Servicetest", "Plugin," +
                            " Del_Def_Arp, Del_Dev_Arp, LanConnectTest, Check_HW_Rel, 
                               POE_Plug, CheckPState," +
                           " Check_Device_Data, ResetDef, Del_Def_Arp, UpdateLoader, 
                              UpdateFirm, UpdateOEM," +
                           " KillFirmware, PCMCIA_Test, RegDomIntf1, RegDomIntf2, Plugin, 
                             Led_1, Led_2, V24_Test," +
                           " Config_M2_2G4, Config_2G4, WLANConn, Led_WLAN1, LTest2g4, 
                             Config_M2_5A0, Config_5A0," +
                          " LTest5a0, Plugin, Config_M2_2G4, ConfigIntf2_13_2G4, 
                             WLANConn, Led_WLAN2, LTest2g4," +
                          " Config_M2_5A0, ConfigIntf2_13_5A0, LTest5a0, Config_M1_2G4, 
                             ConfigIntf2_2G4, WLANConn," +
                          " LTest2g4, Config_M1_5A0, ConfigIntf2_5A0, LTest5a0, reset, 
                            Del_Def_Arp, Del_Dev_Arp," +
                         " Sysinfo, Datenbank" ,"100.1.1.254", "xxx"};
              
 public Databasetest(){
		ProcessBuilder processBuilder = new ProcessBuilder(s);
		// Standardausgabe und Errorausgabe zusammenlegen
		processBuilder.redirectErrorStream(true);
		//Prozess starten
		try {
			this.process = processBuilder.start();
			
		try {
			System.out.println(this.process.waitFor());
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

Danke schonmal.
 
Hellas!

Also ich kenne das Problem von der Methode waitFor() des Process-Objekts. Du findest dazu genug bei Google. Im Grunde musst du einfach einen Stream, zB den ErrorStream lesen.

Beste Grüße,
Billie
 
Zurück