Announcement

Collapse
No announcement yet.

java Process Klasse

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • java Process Klasse

    Hallo zusammen

    Ich drehe mich im Kreis. Ich komme nicht mehr weiter. Ich bin auf eure Hilfe angewiesen. Ich möchte aus einem Java Programm heraus ein Programmstarten. Das geht ja auch ohne Probleme. Nur verlant das Programm an einer bestimmten Stelle die eingabe des Passwortes. Genau dort ist das Problem. Aus dem Inputstream wird eine Zeitlang gelesen und vor der Aufforderung das Passwort einzugeben steht das ganze still. Ich weiss nicht mehr was ich noch machen kann.

    Code:
       public static void main(String[] args) {
            // TODO code application logic here
            if(args.length > 1) {
                String dat_name = args[0];//Dateiname der Konfiguration
                String pwd = args[1];
                String start, parameter;//Aufrufparameter für RDA
    
                try {
                    InputStream  dataInput =
                        new BufferedInputStream(new FileInputStream(dat_name));
    
                    Scanner befehl = new Scanner(dataInput);
                    
                    while(befehl.hasNext()){
                        start = befehl.nextLine();
                        parameter = befehl.nextLine();
                        System.out.println("Startet > " + start);
                        Process prozess = new ProcessBuilder( "perl.exe", start, parameter ).start();
    
                        Scanner lesen = new Scanner(prozess.getInputStream());
                        String text;
                         while(lesen.hasNextLine()) {//
                               if(lesen.hasNextLine()){//*** Hier bleibt das ganze stehen Warum ******
                                text = lesen.nextLine();
                                System.out.println(text);
                            }else {
                                byte pass[];
                                pass = pwd.getBytes();
                                System.out.println("Eingabe < " + pass);
                                prozess.getOutputStream().write(pass);
                            }
                        }
    
                        Scanner fehler = new Scanner(prozess.getErrorStream());
                        while(fehler.hasNext()) {
                            System.out.println(fehler.nextLine());
                        }
                    }
    
                    dataInput.close();//Datei wieder schliessen
                }catch(Exception e) {
                    e.printStackTrace();
                    System.out.println("Datei kann nicht geöffnet werden");
                }
            }else {
                System.out.println("ERR Fehlende oder falsche Startparameter.");
                System.out.println("Programm wird wie folgt gestartet");
                System.out.println(">java start_rda konfigurationsdatei passwort für SYSTEM");
            }
        }
    Hat jemand ein Beispiel wo so was änliches gemacht wird. Oder weiss jemand wo es so ein Beispiel hat.

    Gruss Renato

  • #2
    Mögliche Ursache:

    hasNextLine:

    Returns true if there is another line in the input of this scanner. This method may block while waiting for input. The scanner does not advance past any input.

    Des Weiteren ist das Ganze ungünstig programmiert:

    2-Fache Abfrage auf hasNextLine ist überflüssig
    Christian

    Comment


    • #3
      Ciao Christian

      Da hast du recht. Ich habe es auch schon korrigiert. Ich teste jetzt auf null.
      Herzlichen Dank für die Hilfe.

      Gruss Renato

      Comment

      Working...
      X