tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
2318
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    IroNHeinZ IroNHeinZ ist offline Mitglied
    Registriert seit
    Mar 2009
    Beiträge
    13
    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
     

  2. #2
    THMD THMD ist offline Mitglied Gold
    Registriert seit
    Sep 2005
    Beiträge
    122
    Moin,

    Zitat Zitat von IroNHeinZ Beitrag anzeigen
    Wenn jemand eine Idee hat, woran das liegt, bitte schreibt
    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
    THMD
     
    If Java had true garbage collection, most programs would delete themselves upon execution. (Robert Sewell)

  3. #3
    IroNHeinZ IroNHeinZ ist offline Mitglied
    Registriert seit
    Mar 2009
    Beiträge
    13
    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
     

  4. #4
    Avatar von Billie
    Billie Billie ist offline Mitglied Platin
    Registriert seit
    Jan 2003
    Ort
    Arzl im Pitztal (Tirol)
    Beiträge
    507
    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

  5. #5
    THMD THMD ist offline Mitglied Gold
    Registriert seit
    Sep 2005
    Beiträge
    122
    Hallo,

    Zitat Zitat von IroNHeinZ Beitrag anzeigen
    ganz so blöd bin ich auch nicht
    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
    THMD
     
    If Java had true garbage collection, most programs would delete themselves upon execution. (Robert Sewell)

  6. #6
    quadcore 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
     

  7. #7
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.329
    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ß

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  8. #8
    quadcore 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

  1. Processbuilder mit timeout
    Von Stiffler66 im Forum Java Grundlagen
    Antworten: 5
    Letzter Beitrag: 05.02.10, 11:58
  2. ProcessBuilder entfernt "
    Von smathedark im Forum Java
    Antworten: 2
    Letzter Beitrag: 09.07.08, 12:35
  3. ProcessBuilder - Vista ?
    Von Ashaman im Forum Java
    Antworten: 9
    Letzter Beitrag: 18.05.08, 19:32
  4. ProcessBuilder, src - bin?
    Von flashray im Forum Java
    Antworten: 4
    Letzter Beitrag: 04.06.07, 21:12
  5. Probleme mit Processbuilder
    Von Daelrik im Forum Java
    Antworten: 4
    Letzter Beitrag: 30.09.06, 15:54