ProcessBuilder kann datei nicht finden

qwer1234

Mitglied
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...

Java:
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
 
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
 
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 ...
 

Zurück
Oben