java - 为什么使用 ant 运行 java 时无法获取用户输入?

标签 java ant java.util.scanner

这是一段使用扫描仪读取用户输入的代码。

Scanner inner = new Scanner(System.in);
Logger logger = Logger.getLogger("Test");
logger.info("Before");
int a = inner.nextInt();
logger.info("After");
......

当我使用 ant 运行 java 任务并执行我的代码(使用“fork=true”)时,程序在打印“Before”后卡住了。我可以输入任何内容,但“之后”永远不会被打印。

但是,当使用命令行java时:

java -cp build/BoxBugRunner.jar:lib/gridworld.jar com.perqin.boxbugrunner.BoxBugRunner

输入被接受,一切正常。

使用ant运行java程序时,似乎无法访问系统输入,请问如何解决这个问题?

最佳答案

您应该:而不是使用 System.in:

  • 将程序分成输入之前和之后的部分。在构建脚本中执行第一部分,然后通过 Ant input task 获取输入,最后用输入的参数执行第二部分。

  • 或者将您的程序编写为 Ant 任务,委托(delegate)给 Ant 输入任务来提示输入。

关于java - 为什么使用 ant 运行 java 时无法获取用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38103312/

相关文章:

java - 来自jndi数据源/连接池的jdbc连接的“延迟初始化”:可行性

java - 使用带有投影的 find() 方法使用 mongodb java driver 3.4 检索数据

ant - 使用 ant 从不同的工作目录运行可执行文件

c++ - 构建 OpenCV 时出错 : "recompile with -fPIC"

java - 将罗马数字转换为十进制值错误

使用资源加载器加载文本文件时出现 Java NoSuchElementException

java - 为什么我的代码给出错误的输出?

java - I/O字符流: BufferedReader vs printWriter construction

java - Ant 将东西发布到不同的位置

java - 使用scanner.useDelimiter读取输入文件的第一个字符不正确