2
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;
}
このコードをjavacでビルドすると、すべて正常に動作します。しかし、私はGradleので建てるのコードを実行しようとすると、私はこのなぜjavacと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)
42を取得 - スイッチ、207はそこにある - scanner.next)は(そこにあります。 スキャナは何も読み取らないときに選択肢を読み込もうとします。 私はちょうどgradleを学び始めたので、おそらく私は間違って建物を作りました。 私が構築し、Gradleのラッパーで、実行プロジェクト
$ gradle wrapper --gradle-version 3.4
$ ./gradlew build
$ ./gradlew run
UPDATE:あなたのGradleのビルドファイルで build.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'
}
Gradleがこれを実行すると、入力を要求しません。 –
@ cricket_007どういう意味ですか? –
'scanner.next()'は一時停止し、端末の入力を待ちます –