2012-05-01 8 views
8

Ich versuche, Java-Konsole-Anwendung zu schreiben, ist der Code ganz einfach:Java: System.out.println() an die Konsole schreiben soll, aber es funktioniert nicht

public class ConsoleTest { 
    public static void main(String[] args) { 
     System.out.println("test"); 
    } 
} 

Wenn ich diese Anwendung ausführen von Eclipse, dann sehe ich "test" in Eclipse "Console", aber wenn ich meine App als "Runnable JAR-Datei" exportieren und es von Windows XP cmd.exe ausführen, dann wird nichts auf der Konsole wiedergegeben.

Auf der sicheren Seite, ich habe versucht, System.console() zu überprüfen, gibt es null zurück.

Was kann falsch sein?

+1

Ihr Code funktioniert gut für mich. Wenn Sie es von cmd.exe ausführen, was * sehen * Sie? –

+1

Ich denke, 'System.console()' wird Null auch in Eclipse zurückgeben. –

+0

Wie führen Sie den Jar über die Befehlszeile aus? – Attila

Antwort

15

Wie sind Sie mit Ihrem Programm außerhalb Eclipse?

Sie sollten Kommandozeile wie

java -jar yourjar.jar

oder

java -cp yourjar.jar ConsoleTest

Wenn Sie verwenden gelegentlich javaw stattdessen keine Konsolenausgabe verwendet wird, hergestellt werden. Der STDOUT von javaw ist null. Wahrscheinlich passiert das, wenn Sie auf Ihre JAR-Datei klicken.

+0

AlexR, du hast Recht, danke, ich habe versucht, meine App zu starten, wie Sie vorgeschlagen haben, es funktioniert. Aber es ist ein bisschen peinlich, die App jedes Mal auf diese Art und Weise zu starten. Gibt es eine Möglichkeit, es zum Laufen zu bringen, wenn ich 'yourjar.jar' eintippe und Enter drücke? –

+2

@Dmitry Frank, laufendes Programm durch Klicken auf JAR-Datei ist sowieso nicht sicher. Es hängt von der Zuordnung der Erweiterung "jar" zu dem Programm ab, das es (standardmäßig "javaw") auf dem Client-Rechner ausführt. Viele Entwickler ändern diese Zuordnung in "winzip", weil sie den Inhalt der jar-Datei anzeigen möchten, indem sie darauf klicken.Also, der beste Weg ist, 'Fledermaus'-Datei für Windows und Shell-Skript für Unix zu schreiben, um Java-Programm auszuführen oder WebStart zu verwenden. – AlexR

+0

danke, aber trotzdem möchte ich eine Möglichkeit haben, meine App als "Console" -App zu kompilieren, und JavaW sollte es genauso ausführen wie 'java -jar myapp.jar'. Es wird zumindest für Leute funktionieren, die seine Einstellungen nicht geändert haben =) Schade, dass es keine solche Option gibt. –

1

Es besteht die Möglichkeit, dass Ihre ausführbare JAR-Datei nicht wie erwartet funktioniert und die ConsoleTest-Klasse nicht ausgeführt wird.

2

Versuchen Sie, es über die Befehlszeile in eine Klasse zu kompilieren und dann auszuführen. Funktioniert es?

javac ConsoleTest.java 
java ConsoleTest 
+0

Huh, es funktioniert! Vielen Dank. Eigentlich hat @AlexR recht, ich habe versucht, meine App so auszuführen, wie er es vorgeschlagen hat, und es funktioniert. –

0

Wie, was Hovercraft Full Of Eels schrieb, übersetzen Sie die .java-Datei mit dem folgenden Befehl cmd.exe:

javac ConsoleTest.java 

Dann wird dies eine .class-Datei erstellen, und wir wollen, kompilieren es mit diesem Befehl:

java ConsoleTest 

Es sollte dann die "Test" -Ausgabe anzeigen.

4

Sie müssen Ihre JAR-Datei über die Befehlszeile ausführen.

Wenn Sie darauf doppelklicken, können Sie nicht sehen, dass die Befehlszeilenoperationen im Hintergrund ausgeführt werden. Jar-Dateien werden normalerweise nur mit einem Doppelklick ausgeführt, wenn sie eine GUI enthalten.

Um eine JAR-Datei von einer Eingabeaufforderung ausführen, dies nur tun:

java -jar ConsoleTest.jar 

Sie haben für java.exe Umgebungsvariablen Unter der Annahme, und das aktuelle Verzeichnis hat die JAR-Datei.

Wenn dies nicht funktioniert, ist es wahrscheinlich nicht der Fehler Ihres Codes. Es besteht auch die Möglichkeit, dass die Manifestdatei, die auf die Main-Klasse verweist, falsch eingerichtet wurde.

+0

danke, du hast Recht. Aber gibt es eine Möglichkeit, es zu machen, nur wenn ich 'consolentest.jar' eintippe? –

+0

Die Eingabe von consolentest.jar in cmd wird nicht helfen, da dies das gleiche wie ein Doppelklick ist. Sie können jedoch eine Batch-Datei erstellen, die java -jar consolgtest.jar ausführt, wenn Sie darauf klicken. – EnKrypt

+0

natürlich verstehe ich, dass die Eingabe das gleiche wie das Doppelklicken ist. Aber ich hätte gerne eine Möglichkeit, meine App als eine "Console" -App zu kompilieren, und diese App sollte sich verhalten, indem sie genau doppelt klickt, wie sie von 'java -jar myapp.jar' ausgeführt wird. Ich sehe keine Gründe, solche Option nicht zur Verfügung zu stellen, da Batch-Dateien und manuelle Eingabe schmerzhaft sind. –

-1

Sie müssen die Java-jdk installieren und fügen Sie den Root des Verzeichnisses, das die Datei java.exe enthält, in die Verzeichnisse Ihres Systems, weitere Informationen finden Sie in der Installationsanleitung des jdk.

und die Datei dann in der Konsole mit dem Befehl ausführen

> java file.java 
+0

Ich hätte abgelehnt, wenn ich diesen Ruf hätte. Ihre Antwort hat nichts mit dem Problem zu tun und selbst dieses kleine Stück Befehl, das Sie dort eingeben, ist falsch – EnKrypt

+0

Entschuldigung, dann wollte ich nur sagen, dass Sie den Java-Befehl verwenden müssen, der Teil des Java-JDK ist und stellen Sie sicher, dass die Umgebung Variable ist gut konfiguriert. Ich weiß dies für. Java-Dateien, aber es funktioniert auch für. JAR-Dateien mit mehr Argumenten. –

Verwandte Themen