ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
2318
2318
EMPFEHLEN
-
Moinsen,
ich hab mal wieder ein lüttes Problem.
Ich habe einen ProcessBuilder:
Code :1
new ProcessBuilder("cmd", "/K", "server.bat").start();
er öffnet mir aber leider nicht die AEingabeaufforderung, weshalb ich leider nicht gucken kann, was an dem Pfad den ich angegeben habe falsch ist. Er führt Befehle in der Kommandoeingabe aus (BSP.: wenn ich Notepad über ProcessBuilder("cmd", "/K", "notepad") starte macht er das auch), aber leider meine Server.bat nicht...jetzt will ich halt sehen, was an meinem Pfad falsch ist, aber leider ist die Kommandozeile unsichtbar


Wenn jemand eine Idee hat, woran das liegt, bitte schreibt
Mit den besten Grüßen
IroNHeinZ
Ps:
Ich weiß, dass das eig keine Java-Grundlagen sind, aber ich weiß nicht ich das sonst hinpacken könnte
-
Moin,
ich vermute mal an deiner fehlerhaften bat - Datei. Er versucht sie auszuführen, läuft aber auf einen Fehler und macht das Fenster direkt wieder zu, da ja nix mehr zu tun ist.
Füg doch mal am Ende der bat ein PAUSE-Befehl ein, dann bleibt das Konsolenfenster auf, bis du eine Taste drückst.
hth
THMDIf Java had true garbage collection, most programs would delete themselves upon execution. (Robert Sewell)
-
ganz so blöd bin ich auch nicht

ne...die batch datei lässt sich fehlerfrei ausführen, wenn ich es nicht von java aus mache...auch der Pause befehl bringt nichts.
Das "/K" bewirkt ja auch normalerweise, dass er das anzeigen der cmd-Zeile erzwingt, aber das macht er nicht
-
24.04.09 11:19 #4
Hellas!
Also folgendes hat bei mir funktioniert:
Code java:1 2 3 4 5 6 7 8
public static void main(String[] args) { try { Runtime.getRuntime().exec("C:\\Temp\\test.bat"); } catch(IOException e) { e.printStackTrace(); } }
Fann Ég Fjalli Fallega Steina
Faldi Dá Alla Vildi Deim Leyna
Huldi Dar Hellisskúta Heillasteina
Alla Mína Una eth slegu Óskasteina
-
Hallo,
Tschuldigung.
Als Alternative zu Billie's Variante kannst du dir auch von dem durch new ProcessBuilder.start() erzeugten Process-Object den ErrorStream ausgeben. Dort sollte die Fehlermeldung drinstehen.
Also ungefähr so:
Code java:1 2 3 4 5 6 7 8 9 10 11
Process p = new ProcessBuilder("cmd","/c","was_auch_immer.bat"),start(); InputStream es = p.getErrorStream(); InputStreamReader ir = new InputStreamReader(es); char[] buf = new char[1024]; int i=0; StringBuilder builder = new StringBuilder(); while((i=ir.read(buf))!=-1){ builder.append(buf,0,i); } System.out.println(builder);
Dabei starte ich in dem Beispiel die Console aber mit /c, damit er sie auch schliesst, Ansonsten würde sich die while-Schleife totlaufen, da die Konsole (mit /k) am Leben gehalten wird und die Streams noch Daten bekommen könnten.
Grüße
THMDIf Java had true garbage collection, most programs would delete themselves upon execution. (Robert Sewell)
-
20.12.09 14:38 #6quadcore Tutorials.de Gastzugang
Hallo,
finde dein beitrag super ist auch genau das was ich brauche um weiter arbeiten zu können muss damit bischen herum experementieren um wissen zu können wie das eigentlich funktioniert.
Meine frage: ist diese form so wie sie ist auch Plattform unabhängig ohne die .bat.
bsp:
Process p = new ProcessBuilder("test.sql"),start();
ich möchte automatisiert eine z.b sql ausführen auf SOLARIS,IBM AIX unix .........
würde das so klappen auf allen systemen
danke
-
Hallo,
die Java-Befehle sind plattform-unabhängig.
Nur das was du übergibst ist plattform-abhängig, da du ja Befehle auf dem System ausführst.
Beispielsweise werden bei Windows Befehle von der cmd ausgeführt, deshalb muss man die auch angeben
Code :1
cmd /c
Bei Linux werden die Befehle von der Bash ausgeführt.
Code :1
/bin/bash
Was du machen könntest wäre eine Klasse, die Befehle ausführt, wie oben beschrieben, dann müsstest du nur noch den String der übergeben wird setzen, je nach dem auf welchem Betriebssystem du dich befindest.
Gruß
SaschaEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
20.12.09 14:59 #8quadcore Tutorials.de Gastzugang
Super danke dir vielmals
kann also beruhigt an die sache so ran gehen .
Nochmal danke und schönen sonntag noch.
Ähnliche Themen
-
Processbuilder mit timeout
Von Stiffler66 im Forum Java GrundlagenAntworten: 5Letzter Beitrag: 05.02.10, 11:58 -
ProcessBuilder entfernt "
Von smathedark im Forum JavaAntworten: 2Letzter Beitrag: 09.07.08, 12:35 -
ProcessBuilder - Vista ?
Von Ashaman im Forum JavaAntworten: 9Letzter Beitrag: 18.05.08, 19:32 -
ProcessBuilder, src - bin?
Von flashray im Forum JavaAntworten: 4Letzter Beitrag: 04.06.07, 21:12 -
Probleme mit Processbuilder
Von Daelrik im Forum JavaAntworten: 4Letzter Beitrag: 30.09.06, 15:54





Zitieren

Login




