提问人:Confused 提问时间:7/27/2023 最后编辑:Confused 更新时间:7/28/2023 访问量:101
为什么我的 Gradle 的 Kotlin DSL 代码在我的 Java 项目中没有启用 System.in?
Why does my Kotlin DSL code for Gradle not enable System.in in my Java project?
问:
我一直在尝试在 Java 中使用 Scanner 编写一个简单的应用程序,但遇到了问题。无论如何,我都会不断得到扫描程序抛出的 NoSuchElementException。
这是我的完整错误、代码和我的 build.gradle.kts :
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.base/java.util.Scanner.nextLine(Scanner.java:1651)
at App.main(App.java:11)
法典:
public class App {
public static void main(String[] args) {
// creates an object of Scanner
Scanner input = new Scanner(System.in);
System.out.print("Enter your name: ");
// takes input from the keyboard
String name = input.nextLine();
// prints the name
System.out.println("My name is " + name);
}
}
建。格拉德尔。KTS :
/*
* This file was generated by the Gradle 'init' task.
*
* This generated file contains a sample Java application project to get you started.
* For more details on building Java & JVM projects, please refer to https://docs.gradle.org/8.2.1/userguide/building_java_projects.html in the Gradle documentation.
*/
repositories {
// Use Maven Central for resolving dependencies.
mavenCentral()
}
dependencies {
// Use JUnit Jupiter for testing.
testImplementation("org.junit.jupiter:junit-jupiter:5.9.2")
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
// This dependency is used by the application.
implementation("com.google.guava:guava:31.1-jre")
}
// Apply a specific Java toolchain to ease working on different environments.
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(17))
}
}
application {
// Define the main class for the application.
mainClass.set("project.App")
}
tasks.named<Test>("test") {
// Use JUnit Platform for unit tests.
useJUnitPlatform()
}
plugins {
application
}
tasks.named<JavaExec>("run") {
standardInput = System.`in`
}
我更改了几次代码,尝试使用 Buffered Reader,但无法获得输入。我以为这会是我的代码有问题,但由于我是 Gradle 的新手,我开始探索这是我设置 Gradle 的方式有问题的可能性。我找到了这个线程,并尝试复制和粘贴其他人认为对他们有用的 kotlin 代码。浏览文档,似乎是正确的。即使使用这个新的代码片段(在 build.gradle.kts 文件的底部),我仍然得到 NoSuchElementExceptions 并且无法获得用户输入。我在 vscode 中使用 gradle 扩展运行我的项目,但在 windows 命令行的命令提示符(gradle 运行)中运行它时遇到了同样的问题。
答:
0赞
Confused
7/28/2023
#1
这是我运行它的方式的问题。使用左侧边栏上的 VSCODE gradle 菜单导致了错误,当我使用 cmd 行运行时,它也不起作用,但它在 powershell 中有效。所有这些都使用相同的“gradle run”命令。谢谢你为我指明了这个方向。
评论