externe Programm starten

Von: , Frage gestellt am So, 28. Apr 2002

Hallo,

ich habe hier ein Kommandozeilenprogramm, das auf eben dieser einige Ausgaben generiert (ja, das läuft dann halt nur unter Windows, aber egal). Diese Programm möchte ich aus einer Java-Applikation starten und die Ausgaben in einem String speichern. Zum Starten verwende ich:

Runtime.getRuntime().exec("./dateiname.exe");

Allerdings erscheint daraufhin in der DOS-Box nur "Press any key to continue", die eigentlich Ausgaben sehe ich nicht. Das Programm an sich erscheint aber im Task-Manager, wurde also korrekt gestartet.

Weiss jemand, wieso die Ausgaben nicht zu sehen sind? Starte ich es manuell von der Kommandozeile, dann funktioniert's auch.

Viele Grüße, Robert

3 Antworten zu dieser Frage

  1. Antwort von nach 18 Stunden 0 hilfreich
    Re: externe Programm starten

    Hallo,

    ich habe hier ein Kommandozeilenprogramm, das auf eben dieser
    einige Ausgaben generiert (ja, das läuft dann halt nur unter
    Windows, aber egal). Diese Programm möchte ich aus einer
    Java-Applikation starten und die Ausgaben in einem String
    speichern. Zum Starten verwende ich:

    Runtime.getRuntime().exec("./dateiname.exe");
    Das Prog. darf dann nicht auf die Console (DOS-box) zugreifen und alles landet in Prozess.:

    OutputStream getErrorStream()
    Gets the error stream of the subprocess.

    InputStream getInputStream()
    Gets the input stream of the subprocess.

    OutputStream getOutputStream()
    Gets the output stream of the subprocess. Allerdings erscheint daraufhin in der DOS-Box nur "Press any
    key to continue",
    Wo der herkommt solltst du mal rausfinden, das ist nicht ganz normal.

    die eigentlich Ausgaben sehe ich nicht.

    Die Ausgaben von Prozess.getOutputStream() nach System.out "kopieren". das heist einen PipedStream dazwischenbauen. (oder manuel mit , while (true) {System.println (Stream.read());})


    cu

    • Antwort von nach einem Tag 0 hilfreich
      Re^2: externe Programm starten

      Hallo, Das Prog. darf dann nicht auf die Console (DOS-box) zugreifen
      [...] Allerdings erscheint daraufhin in der DOS-Box nur "Press any
      key to continue"
      Wo der herkommt solltst du mal rausfinden, das ist nicht ganz
      normal.
      Ich habe jetzt das externe Programm mal so umgeschrieben, dass es seine Ausgaben in eine Datei schreibt, ich also mich nicht mehr mit dem Einlesen von den Streams beschäftigen muss. Allerdings behauptet sich wohl Deine Vermutung, dass das Programm gar nicht auf die DOS-Box zugreifen kann. Denn auch jetzt erscheint nur "Press any key to continue", und die Ausgabedatei wird auch nicht erstellt. Kann man von Java aus generell keine Kommandozeilenprogramme ausführen?

      Viele Grüße, Robert

      • Antwort von nach einem Tag 0 hilfreich
        Re^3: externe Programm starten

        Ich habe jetzt das externe Programm mal so umgeschrieben, dass
        es seine Ausgaben in eine Datei schreibt, ich also mich nicht
        mehr mit dem Einlesen von den Streams beschäftigen muss.
        Allerdings behauptet sich wohl Deine Vermutung, dass das
        Programm gar nicht auf die DOS-Box zugreifen kann. Denn auch
        jetzt erscheint nur "Press any key to continue", und die
        Ausgabedatei wird auch nicht erstellt. Kann man von Java aus
        generell keine Kommandozeilenprogramme ausführen?
        an sich theo. schon. Allerdings hab ich noch keins gesehen das funzte. Die meiste benutzen einfach die Stream´s und zeigen ein Text-feld mit der Ausgabe an.

        Der beste Ansatz (der am weitesten kam)(unter windoff) war command.com (cmd.com) die Ausführung zu überlassen. (cmd Prog). Ein anderer möglicher Ansatz ist rundll (auch windows) zu benutzen.

        die JVM hat generell nur die 3 Stream´s, und gibt die nicht ab. neue erzeugen kann sie nicht, fork() baut ja auch keine per-se neuen Stream´s.

        Hab´s damals mit einem Textfeld gelöst.

        cu

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!