当前位置: 首页 > 知识库问答 >
问题:

Gradle run任务在控制台中运行时接受输入,但不是理想的运行配置

苏鸿羽
2023-03-14

我有以下Java主类,我正试图使用IntelliJ IDEA中的Gradle插件编译和运行它:

package com.mikidep.bookshop;

import java.io.IOException;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws IOException {
        Scanner in = new Scanner(System.in);
        System.out.print("Inserisci testo qui: ");
        System.out.println(in.nextLine());
        System.out.println("Yee!");
    }
}

我的身材。gradle如下:

group 'com.mikidep.bookshop'
version '1.0-SNAPSHOT'

apply plugin: 'application'

mainClassName = "com.mikidep.bookshop.Main"

sourceCompatibility = 1.5

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

run {
    standardInput = System.in
}

现在,如果我在终端中运行gradle run-q,一切正常。然而,我想使用这个想法运行配置来测试运行:

一切都很好,直到我做一些控制台输入<代码>输入。nextLine()引发以下异常:

线程“main”java中出现异常。util。NoSuchElementException:在java中找不到行。util。扫描仪。com上的nextLine(Scanner.java:1585)。米基德普。书店主要的main(main.java:10)

我还试着调试它,注意到系统中的所有字段。在中似乎被归零,好像整个流还没有初始化。有人知道发生了什么吗?

编辑:我刚刚验证了这也会影响构建脚本:我将这几行添加到运行任务中

System.out.println("Wait...")
System.in.read()
System.out.println("Ok!")

但Gradle立即打印这两行,而不用等待我的输入。

共有1个答案

宰父存
2023-03-14

<代码>系统。在中不是脚本参数。

在命令行中,由于您没有指定Gradle期望的任何参数,因此它只使用您键入的剩余参数作为标准输入。在IDEA中,标准输入和脚本参数是分开的,标准输入来自运行或调试控制台窗口。

 类似资料:
  • 我有一套使用spring框架用Java写的服务。一些服务有预定的任务(使用spring的< code>@Scheduled注释)来做一些内务处理(生成处理过的数据,数据清理等。).由于这些计划任务,我不能运行服务的多个实例,因为所有实例都选择相同的任务,并且多次执行,导致重复/损坏的数据。为了解决这个问题,我想在任务执行时进行检查,并且只允许在一个实例上执行。我该怎么做?这个问题有更好的解决方法吗

  • 问题内容: 我正在编写一个通过System.out输出字符串的Java应用程序,我只想知道如何在IDE外部运行此应用程序。我有一个可执行的jar。如何在控制台中看到此输出? 问题答案: 基本上: Sun网站有更多信息

  • 当我跑的时候 控制台启动,我看到,但我无法键入它。我哪里出错了?

  • 我有一个包含4个命令的批处理脚本,如下所示 当我双击批处理文件时,它运行得很好。当我尝试从命令提示符运行批处理文件时,它没有看到要删除的. csv文件,我不确定这是为什么,但我认为这对我的目的并不重要。 当我从task scheduler手动运行任务时,它会截断数据库中的表并删除现有的csv文件,但没有创建新文件,这使我相信它会卡在.vbs文件上。 我试着用。vbs脚本,并将路径传递给。xls和。

  • 问题内容: 我一般不写batches,但是我现在有一个batch使用forfiles我的FLV文件从一个文件夹复制到另一个。当我手动运行批处理时,它每次都能工作,但是从计划的任务中,会引发(0x1)错误。 不确定预定任务不喜欢哪种语法。 更新资料 在我的预定任务“动作”下,我有以下内容: 问题答案: 当我的Start in (optional):路径是UNC路径时,它将不起作用。因此,我将批次移至

  • 问题内容: 我有一个批处理文件,它将搜索一个Java进程并将其杀死。当bat文件在命令提示符下运行时,脚本可以正常工作。但是,当我尝试在任务计划程序中执行时,它不起作用。 我选择了“无论用户是否登录都运行”选项 我的批处理文件如下所示: 我还尝试了此链接中提到的所有内容 批处理手动运行,但不在计划任务中运行 还有其他建议。 注意:我还有另一个批处理文件来存档文件,该文件可以在任务计划程序中使用相同