3
我創建了一個簡單的java「echo」應用程序,它接受用戶的輸入並將其顯示給他們以證明問題。我可以毫無困難地使用IntelliJ的內部「運行」命令運行此應用程序,並且在執行由gradle build
生成的編譯後的java文件時也可以運行此應用程序。但是,如果我嘗試使用gradle run
執行應用程序,則會收到掃描程序拋出的NoSuchElementException異常。當使用Gradle運行應用程序時,java.util.scanner拋出NoSuchElementException
我認爲gradle或者應用程序插件專門對系統IO做了一些奇怪的事情。
應用
package org.gradle.example.simple;
import java.util.Scanner;
public class HelloWorld {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
String response = input.nextLine();
System.out.println(response);
}
}
的build.gradle
apply plugin: 'java'
version '1.0-SNAPSHOT'
apply plugin: 'java'
jar {
manifest {
attributes 'Main-Class': 'org.gradle.example.simple.HelloWorld'
}
}
apply plugin: 'application'
mainClassName = "org.gradle.example.simple.HelloWorld"
sourceCompatibility = 1.5
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
}
任何想法如何讓使用gradle run
這個應用程序的工作?
這個偉大的工程,爲此,由現在看來'gradle這個--console平原運行醜陋提示惱火的人'刪除它。這裏有一個公開的問題https://issues.gradle.org/browse/GRADLE-1147,我發現這個片段。 – nickbdyer
如果不使用應用程序插件,則'standardInput = System.in'行應該在您需要將stdin重定向到其中的任何任務中執行。對我來說,它是在一個自定義[JavaExec](https://docs.gradle.org/current/dsl/org.gradle.api.tasks.JavaExec.html)任務中。 –
Dude在我的運行腳本中不起作用。你能解釋更多嗎? –