有没有办法在Netbeans中将输入从文件重定向到标准输入?

时间:2012-03-13 14:29:27

标签: java maven netbeans

我正在使用Netbeans和Maven开发应用程序。我的应用程序应该从stdin获取数据。但我无法理解如何测试它。将< data.txt放入args列表不起作用。

我需要和:

一样
$ java MyProgram < data.txt 

5 个答案:

答案 0 :(得分:11)

我认为你有类似的事情:

public static void main(String[] args) {
...
}

这可以用作应用程序的入口点,在此之前您可以通过以下方式更改输入通道:

FileInputStream is = new FileInputStream(new File("test.data"));
System.setIn(is);

以上内容可在单位/整合测试中使用。

答案 1 :(得分:6)

这可以通过将您自己的运行目标添加到项目的build.xml文件来完成。例如:

<target name="run" depends="jar">
  <exec dir="${work.dir}" executable="java" input="${work.dir}/inputfile.txt">
    <arg value="-jar"/>
    <arg file="${dist.jar}"/>
  </exec>
</target>

请注意,如果为项目关闭“保存时编译”功能,则“运行”,“调试”和“测试”等命令仅使用自定义build.xml。因此,您需要确保在项目的属性中关闭“保存时编译”。

答案 2 :(得分:1)

我不确定它在NetBeans中是怎么回事,但是在eclipse中你可以写一些东西到控制台,它被重定向为STDIN到正在运行的应用程序。我相信同样适用于NetBeans。因此,只需运行您的应用程序,然后将data.txt的内容复制/粘贴到控制台,并可能按<ENTER>

如果没有任何帮助可以使用远程调试,即从命令提示符运行程序,如下所示:

java -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y MyProgram < data.txt

然后从NetBeans连接到此进程。

答案 3 :(得分:1)

老派,但这就是我所知道的。需要注意的是,mvn命令在完成时不会返回cli,但出于某些目的,这是可以接受的。请注意,您需要位于项目根目录

mvn“-Dexec.args = -classpath%classpath com.mycompany.test”-Dexec.executable = / Downloads / jdk1.7 / bin / java exec-maven-plugin:1.2.1:exec&lt;的/ tmp /输入

答案 4 :(得分:0)

使用以下文本在Files-&gt; build.xml下添加新目标“run-input”。注意:此版本使用java运行时的正确位置。此外,它假定您已使用文件input1创建了一个名为inputs的目录。

<target name="run-input" depends="jar">
  <exec dir="${work.dir}" executable="${java.home}/bin/java" input="${src.dir}/inputs/input1">
    <arg value="-jar"/>
    <arg file="${dist.jar}"/>
  </exec>
</target>

您始终可以为此新目标创建快捷方式。