我正在使用Netbeans和Maven开发应用程序。我的应用程序应该从stdin获取数据。但我无法理解如何测试它。将< data.txt
放入args列表不起作用。
我需要和:
一样$ java MyProgram < data.txt
答案 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“-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>
您始终可以为此新目标创建快捷方式。