58

Javaとgradleを使用してコンソールアプリケーションを作成しています。applicationプラグインを使用していて、で必要なフィールドが正しく構成されていbuild.gradleます。

私のメインクラスでは、BufferedReaderとリンクしていSystem.inます。問題は次のとおりです。gradle runプロジェクトディレクトリで実行すると、リーダーはコンソール入力を待機しません。BufferedReader#readLine代わりnullに、最初の呼び出しで戻ります。この振る舞いは、私がしていることには望ましくありません。

解決策は何ですか?gradle用に別のコンソールアプリケーションプラグインがありapplicationますか、それとも自分のニーズに合わせてプラグインを微調整する必要がありますか?

4

4 に答える 4

86

デフォルトでは、gradle ビルドの system.in は実行 (JavaExec) タスクの system.in と結び付けられていません。次のことができます。

// build.gradle (Groovy syntax)
run {
    standardInput = System.in
}

// build.gradle.kts (Kotlin syntax)
tasks.named<JavaExec>("run") {
    standardInput = System.`in`
}
于 2012-11-01T07:13:44.067 に答える
3

の場合build.gradle.kts:

tasks.getByName<JavaExec>("run") {
    standardInput = System.`in`
}
于 2020-11-20T14:32:22.670 に答える
-4

おそらく、問題はJavaコードにあります。アプリケーションプラグインが行うのは、Javaコードをコンパイルし、指定したメインクラスを実行することだけです。アプリケーションプラグイン(mainClassName)に指定したメインクラスにコードを投稿できますか?

于 2012-11-01T06:48:29.130 に答える