Angenommen, ich habe ein executable jar
aus einem Code erstellt, in dem ich
Wenn wir das ausführbare jar ausführen, gibt es keine Konsole. Also, was passiert mit dieser Linie? Wie geht java
mit dieser Situation um?
BEARBEITEN 01 :
HINWEIS : Wenn ich keine Konsole verwende, um jar
auszuführen oder irgendeine Konsole damit zu verbinden.
EDIT 02 : Dinge klarer machen:
Ich weiß, dass nichts gedruckt wird, da es keine Konsole gibt ..! Ich möchte wissen, wie java
in diesem Fall diese Zeile behandelt? Wird diese Zeile beim Generieren des Bytecodes für ein ausführbares jar weggelassen? Oder wird diese Linie gerade übersehen, wenn es keine Konsole gibt? Oder irgendetwas ...
Es gibt nichts Besonderes, wenn Sie Code in einer ausführbaren JAR-Datei ausführen. Wenn Sie es von einer Konsole ausführen, z. Mit java -jar foo.jar
wird die Ausgabe immer noch auf die Konsole übertragen.
Wenn Sie den Code auf irgendeine Weise ausführen, die keine Konsole anfügt - wie zum Beispiel " javaw
" unter Windows, dem Standardprogramm, das mit ausführbaren JAR-Dateien verknüpft ist -, wird die Ausgabe nirgendwohin gehen. Es wird keine Fehler verursachen - der Text wird einfach verloren gehen.
Beachten Sie, dass in diesem Fall, wenn Sie stattdessen System.console()
verwenden, das null
zurückgibt. Also:
Die Ausgabe wird weggelassen, solange Sie Ihre Anwendung nicht über ein Konsolenfenster ausführen ( java -jar executable.jar
). Darüber hinaus können Sie Ihre Java-Installation so konfigurieren, dass ein Konsolenfenster gestartet wird, sobald Sie eine Java-Anwendung starten. Die Ausgabe wird dann in das Konsolenfenster der JVM geschrieben. Sie finden einen Artikel Wie aktiviere und betrachte ich die Java-Konsole? im offiziellen Java-Web Website.
Ich öffne es von der Konsole (java -jar YourJar.jar) der Text wird in Ihrem Konsolenfenster gedruckt.
Wenn Sie es im Explorer (oder ähnlich) öffnen, sehen Sie den Text nicht
Um Ihre zweite Bearbeitung zu verdeutlichen: Der Bytecode wird nicht weggelassen, weil der Compiler nicht wissen kann, in welchem Kontext der jar ausgeführt wird. Das jar kann immer von der Konsole aus aufgerufen werden, in diesem Fall muss die println dort bleiben.
Tatsächlich wären viele jar-Dateien ansonsten völlig nutzlos. Es gibt viele Java-Programme, die mit dem Benutzer über Ein- und Ausgabe der Konsole interagieren. Es ist nicht notwendig, dass ein Java-Programm eine GUI hat (oder komplett im Hintergrund läuft).
Tags und Links java executable-jar system.out