java - Intellij 标准输入重定向

标签 java windows batch-file intellij-idea cmd

Idea 运行 Batch configuraton 与在 Windows 中运行纯 cmd.exe 相比有何不同?

我创建批处理配置以运行我的 Java 应用程序。当我运行它时,它会在 Idea 控制台中显示结果:

cmd.exe /c java -classpath C:\app;C:\app\libs.jar App < input.txt

此应用等待来自标准输入的输入。这一行应该运行它并从 input.txt 文件中读取。但是不要等待输入来阅读它。当我在 Idea 控制台中按 ^D 时,应用程序向我显示没有输入。

同时,当我将此启动脚本从 Idea 控制台直接复制粘贴到 Windows cmd 时,一切都按预期进行,应用程序读取文件并正确完成。

我确实阅读了 stackoverflow 的答案并找到了尝试外部工具创意选项的建议。我尝试将其运行为:

java -classpath C:\app;C:\app\libs.jar App < input.txt

但它仍在等待输入。以及 Java 应用程序运行配置,如果我将文件名作为参数传递,它等待输入:

"C:\Program Files\Java\jdk1.8.0_92\bin\java"
 -Didea.launcher.port=7533
"-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IDEA\bin"
 -Dfile.encoding=UTF-8
 -classpath "long..long..classpath"
 com.intellij.rt.execution.application.AppMain Col < input.txt

我确实找到了几个关于 stdin 重定向的链接(onetwothree),似乎没有办法仅通过代码从想法中做到这一点。 谢谢!

最佳答案

我找到的唯一方法是将文件名作为参数传递给 main 函数并添加如下行:

if(args.length > 1)
    System.setIn(new FileInputStream(args[1]));

关于java - Intellij 标准输入重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37897520/

相关文章:

Java 对 Javabean 嵌套属性进行 null 检查

Windows批处理文件,在标签之间找到一个字符串

java - JSF中CRUD的正确使用方法

java - XML 解析文档

mysql - 任何适用于 Windows 的 MySQLTuner 等效/替代品?

c++ - 使用 XAML 和 C++ 再现本地视频文件

c# - 将元素添加到 ListView 时如何设置动画/过渡?

batch-file - 如何在 Windows 7 下为进程设置超时?

path - 如何仅为该批处理文件执行添加设置路径?

java - 如何在 mac osx 中使用 java 获取连接的可用音频设备