2009-03-16 15 views
8

Ich würde gerne wissen, wo java stderr standardmäßig geht?Wohin geht java stderr?

Ich weiß, ich kann die stderr mit System.setErr ändern, die "die" Standard "Fehler Ausgabestrom." Aber ich weiß nicht, welche "Standard" ist.

Ich möchte meine Frage mehr angeben: Ich habe C++ - Bibliothek, die ich in Java (jni) verwenden. Das Problem ist, dass es scheint, dass ich Ausgabe zu stderr nicht sehen kann, die von meiner C++ Bibliothek kommt. Ich rufe assert() in der C++ - Bibliothek auf und sehe die Ausgabe in der Konsole nicht, wenn ich die Java-API ausführe, die die Bibliothek verwendet.

+0

Haben Sie versucht, System.stderr.writeln gehen sollte ("Ich bin da")? Was hast du gesehen? –

Antwort

3

Standardmäßig ist System.err die Konsole, genau wie System.out.

-1

Der Standardfehlerausgangsstrom wird an die Konsole gesendet. Dieser Stream ist bereits geöffnet und bereit, Ausgabedaten zu akzeptieren.

Siehe die java sun api für weitere Details.

+1

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. – Linuxios

+0

Ja, du hast Recht, ich werde es ändern! – Tobias

14

Es geht auf den Standard-Fehler-Stream des Prozesses, was auch immer das eingerichtet ist.

  • Wenn Sie die Anwendung von einer Konsole aus ausführen, wird sie wahrscheinlich auch auf die Konsole schreiben.
  • In einer GUI wird der Standard out/err oft weggelassen, d. H. Die Ausgabe ist verloren.
  • In einem Dienst (z. B. einem Webserver) wird der Standardfehler/die Standardausgabe normalerweise in einer gedrehten Protokolldatei erfasst, hängt jedoch vollständig vom Dienst ab.
  • Die meisten Plattformen ermöglichen es Ihnen, den Standardfehlerdatenstrom woanders (z. B. in eine Textdatei) umzuleiten.

    Die Idee System.setErr sind Sie nicht zu erlauben, den Standardfehlerstrom des Prozesses selbst verwenden, sondern es so zu ändern, etc zu System.err.println Anrufen an den gegebenen Strom gehen.

    0

    Ich habe gerade ein kleines Testprogramm geschrieben, das eine System.err.println tut und es scheint, auf der Konsole ausgegeben zu werden.

    2

    Dateibeschreibung 2 des Aufrufers. Wohin es von dort geht, hängt — vom Anrufer ab. On-Konsole können Sie es irgendwo anders, wie zum Beispiel umleiten:

    java Example 2>> errors.log 
    
    Verwandte Themen