2012-11-01 10 views
30

Javaとgradleを使用してコンソールアプリケーションを作成しています。私はapplication pluginを使用しており、必要なフィールドはbuild.gradleに正しく設定されています。Javaとgradleを使用したコンソールアプリケーション

私のメインクラスには、とリンクしているBufferedReaderがあります。ここに問題があります:プロジェクトディレクトリにgradle runを実行すると、リーダーは自分のコンソール入力を待つことはありません。 BufferedReader#readLineは、最初の呼び出しでnullを代わりに返します。この動作は私が何をしているのか望ましくない。

解決策は何ですか。 gradle用の別のコンソールアプリケーションプラグインがありますか、私のニーズに合うようにapplicationプラグインを調整する必要がありますか?

+0

4年後! Windows OSを実行している場合、私はちょうどCygwin端末からこの厄介な ">ビルド..."のものが表示されないタスクを実行することによってそれを発見した。しかし、私は 'standardInput = System.in'を置くことは私が特別に定義された' task'の中に置くだけで動作することを発見しました。 –

答えて

54

デフォルトでは、gradleビルドのsystem.inは、実行(JavaExec)タスクのsystem.inに組み込まれていません。上述したように、

run{ 
    standardInput = System.in 
} 
+2

ありがとう!それは大きな助けとなりました。今度は、次の入力を求めるプロンプトが表示されたら、 '>ビルド>:run'を印刷しないようにする方法がありますか? – missingfaktor

+3

残念ながら現時点ではありません。私は少し前に問題を提起しました:http://issues.gradle.org/browse/GRADLE-1147あなたはそれに投票することができます。 –

+0

ありがとう、もう一度。これもやります。あなたの答えを受け入れる。 :) – missingfaktor

-3

あなたのJavaコードに問題がある可能性があります。すべてのアプリケーションプラグインはjavaコードをコンパイルし、指定したメインクラスを実行します。アプリケーションプラグイン(mainClassName)に指定したメインクラスにコードを投稿できますか?

+0

IntelliJ IDEA内からコードを実行しました。 (ファイルを右クリックし、 'Run .main'を選択することで)それはうまく動作します。 – missingfaktor

関連する問題