Konsole-Anwendung mit Java und gradle
Schreibe ich eine Konsole-Anwendung mit Java und gradle. Ich bin mit dem application
plugin und haben Sie die erforderlichen Felder korrekt konfiguriert build.gradle
.
In meiner main-Klasse, ich habe BufferedReader
verbunden mit System.in
. Hier ist das problem: Wenn ich gradle run
im Projekt-Verzeichnis, das der Leser nicht warten, bis meine Konsole zur Eingabe. BufferedReader#readLine
stattdessen gibt null
auf den ersten Anruf. Dieses Verhalten ist nicht wünschenswert, für was mache ich.
Was ist die Lösung? Gibt es einen separaten Konsole-Anwendung-plugin für gradle oder muss ich mich zwicken application
plugin irgendwie auf meine Bedürfnisse anzupassen?
- 4 Jahre später! Wenn Sie mit einem Betriebssystem von Windows, ich habe nur festgestellt, dass durch die Ausführung der Aufgabe von einer Cygwin-terminal dieses lästige "> Building ... " - Sachen nicht angezeigt. Aber ich habe auch festgestellt, dass die Inbetriebnahme
standardInput = System.in
funktioniert nur für mich, wenn ich legte es in einen speziell definiertentask
nicht, wenn innerhalbrun
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Standardmäßig ist das system.in Ihrer gradle build ist nicht verdrahtet mit dem system.in der run (JavaExec -) Aufgabe. Sie können Folgendes tun:
> Building > :run
wenn es fordert Benutzer für die nächste Eingabe?Wird, wie oben angegeben, fügen Sie
And run:
wo:
-q
läuft Aufgabe im "quiet" - Modus (um zu vermeiden, dass> Building > :run
)--console=plain
Tropfen status der Ausführung:<=-> 80% EXECUTING [TIME]
Quelle: https://docs.gradle.org/current/userguide/gradle_command_line.html
Chancen sind, das problem liegt in Ihrem java-code. Alle Anwendungs-plugin tut, ist das kompilieren der java-code, und führen Sie die main-Klasse, die Sie angeben. Können Sie nach dem code in deiner main-Klasse, die Sie angegeben haben, für die Anwendung plugin (mainClassName) ?
Run <classname>.main
.) Es funktioniert gut dort.