# ProcessBuilder kann datei nicht finden



## qwer1234 (7. Mai 2012)

Hallo Leute

ich hab ein kleines Problem mit dem ProessBuilder: und zwar will ich eine batch datei starten mit 
dem ProcessBuilder. Nur kann er leider angeblich die Datei nicht finden. 
Vorher hat ich das ganze mit CMD drin (siehe Code), da lief es. Woran liegt das? 
Andere Kommandos wie netstat kann ich auch ohne cmd losstarten...


```
ProcessBuilder builder = new ProcessBuilder();
// ALT: builder.command(cmd, "/C", processSettings.getStartFile());
builder.command(processSettings.getStartFile());
builder.directory(new File(processSettings.getStartFileDirectory()));
Process p = builder.start();
```

Fehlermeldung:
INFO: IOException at startProcess DummyApp3java.io.IOException: Cannot run program "start3.bat": CreateProcess error=2, Das System kann die angegebene Datei nicht finden
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
	at de.projekt.startProcess(PController.java:285)
	at de.projekt.PController.access$2(PController.java:265)
	at de.projekt.PController$StartUpSequence.run(PController.java:697)
	at java.lang.Thread.run(Thread.java:662)
Caused by: java.io.IOException: CreateProcess error=2, Das System kann die angegebene Datei nicht finden
	at java.lang.ProcessImpl.create(Native Method)
	at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
	at java.lang.ProcessImpl.start(ProcessImpl.java:30)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
	... 4 more


----------



## SlaterB (7. Mai 2012)

eigenständige Programme mit Maschinencode sind exe-Dateien,
in bat stehen Konsolenbefehle, die bat muss von der Konsole ausgeführt werden wie diese Befehle a la dir selber,
und sei es nur der Aufruf einer tatsächlichen exe, jedenfalls wird ja wohl Klartext in der Datei sein 

bleib bei CMD /C und alles ist gut


----------



## irgendjemand (7. Mai 2012)

das problem ist das unter windows der datentyp ".BAT" nun mal mit "CMD %1 %%" *oder so ähnlich* verknüpft ist ... wesshalb beim doppelklick dann die console aufgeht und den inhalt abarbeitet ...

wenn du nun selbst eine BAT "ablaufen" lassen willst ... *denn "ausführen" wäre hier das falsch wort* ... dann musst du diese "verknüpfung" selbst herstellen ... und das beudetet nun mal das du manuell die "cmd.exe" startest und dieser als übergabe-parameter den absoluten pfad zur BAT-datei gibst ... ansonsten höchstens BAT einlesen und selber interpretieren ... das wäre dann aber so als würdest du CMD.exe neu schreiben wollen ...


----------

