为什么用javac和gradle构建的相同代码表现不同?

为什么用javac和gradle构建的相同代码表现不同?,java,gradle,Java,Gradle,当我用javac构建这段代码时,一切都很好。但是当我尝试运行用gradle构建的代码时,我得到了这个结果 switch (readChoice()) { //options } private static int readChoice() { String input; int choice = -1; try { input = scanner.next(); choice = Integer.parseInt(input);

当我用javac构建这段代码时,一切都很好。但是当我尝试运行用gradle构建的代码时,我得到了这个结果

switch (readChoice()) {
  //options
}

private static int readChoice() {
    String input;
    int choice = -1;
    try {
        input = scanner.next();
        choice = Integer.parseInt(input);
    } catch (NumberFormatException e) {
        logger.error("Error while trying to read choice from the console", e);
        }
    }
    return choice;

}
42-有开关,207-有扫描仪。下一步()。 当没有任何内容可读取时,扫描仪尝试读取选项。 我刚开始学习gradle,所以也许我在建筑方面犯了错误。 我使用gradle包装器构建并运行项目

Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:862)
    at java.util.Scanner.next(Scanner.java:1371)
    at edu.java.core.cinema.Main.readChoice(Main.java:207)
    at edu.java.core.cinema.Main.main(Main.java:42)
更新: 存在build.gradle文件

$ gradle wrapper --gradle-version 3.4
$ ./gradlew build
$ ./gradlew run

在gradle构建文件中添加

apply plugin: 'idea'
apply plugin: 'java'
apply plugin: 'application'

mainClassName = 'edu.java.core.cinema.Main'

repositories {
    mavenCentral()
}

jar {
    baseName = 'lab2'
    version =  '0.1.0'
}

sourceSets.main.java.srcDirs = ["src"]

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
   compile group: 'com.google.code.gson', name: 'gson', version: '2.8.0'

   compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.2'

   compile group: 'ch.qos.logback', name: 'logback-core', version: '1.2.2'

   compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'

}

将“梯度输入”重定向到
系统.in
。如果您不这样做,它将是空的,并且在尝试读取输入时将失败。

当Gradle运行此操作时,它不会提示输入?@cricket\u 007您的意思是什么?
scanner.next()
应该暂停并等待您计算机上的输入terminal@cricket_007是的,但是由于Gradle的某些原因,它不等待代码中引发异常的行是什么?
run {
    standardInput = System.in
}