Mit Java gestarteter Prozess verhält sich anders als nativ gestarteter

thommyslaw

Mitglied
Hi,
ich habe folgendes Problem:
Ich baue gerade an einer Java-Applikation, die eine Socket-Verbindung zu einer laufenden Windows-Anwendung aufbaut und Daten austauscht.
Das funktioniert auch alles problemlos, wenn die Anwendung wie gewöhnlich über eine .exe Datei oder zugehörige Verknüpfung gestartet wird.
Nun wollte ich diese Anwendung direkt mit meiner Java-Applikation starten [über Runtime.getRuntime().exec(blabla.exe)].
Beide Applikationen starten wie gewünscht, doch die Windows-Anwendung verhält sich anders, so dass keine Socket-Verbindung aufgebaut werden kann.
Kann es sein, dass der Prozess, da er über die Java-App. gestartet wurde, nun andere "Zugriffsrechte" o.ä. hat und ich irgend etwas noch zusätzlich beachten muss?

Mit Dank und Gruß
Thomas
 
Das Working Directory ist natürlich, dass des Java Programms, bzw. das was du mitgibst.

Wenn du mit Java5+ arbeitest ist es zu empfehlen den Processbuilder zu benutzen.

Desweiteren musst du die Streams abfangen und ggf. schliessen sonst wartet er auf eine nicht kommende Eingabe.
 
Vielen Dank für die Hilfe.
Das Working Directory war es tatsächlich. Mit dem ProcessBuilder läuft es nun wie gewünscht.

Alt:
Code:
Runtime runtime = Runtime.getRuntime();

try {
    runtime.exec("C:/Programme/MyExternalTool/startThis.exe");
} catch (IOException e) {
    e.printStackTrace();
}
Neu:
Code:
ProcessBuilder pb = new ProcessBuilder("C:/Programme/MyExternalTool/startThis.exe");
pb.directory(new File("C:/Programme/MyExternalTool"));
	
try {
    pb.start();
} catch (IOException e) {
    e.printStackTrace();
}
 
Zurück