我使用Eclipse开发Java程序,并且认为如果没有参数,我会为程序添加一个选项来解析stdin。 (否则它解析文件)Java + Eclipse:如何调试正在接收管道/重定向stdin的java程序?
我遇到问题,如果我执行"somecommand | java -jar myjar.jar"
并去调试......然后意识到我不知道如何在Eclipse中启动一个进程。如果我在命令提示符下运行它,我将无法附加到正在运行的进程,因为进程立即启动。
关于如何调试的任何建议?
编辑:看,事情是,我写我的程序最初采取文件名参数。然后我认为它也会对stdin有用,所以我做了抽象InputStream出我的程序(如Queue先生建议)。它在文件(java -jar myjar.jar myfile
)上正常工作,但在运行type myfile | java -jar myjar.jar
时无法运行。我怀疑在这两种情况下有什么不同(检测是不同的?),但我真的想调试。
// overall program structure follows:
public static void doit(InputStream is)
{
...
}
public static void main(String[] args)
{
if (args.length > 0)
{
// this leaves out the try-catch-finally block,
// but you get the idea.
FileInputStream fis = new FileInputStream(args[0]);
doit(fis);
fis.close();
}
else
{
doit(System.in);
}
}
会把你的Eclipse运行配置的参数做诡计吗? – javamonkey79 2009-10-16 22:49:37
这些不是参数。这是事实,我必须在一些命令管道。 – 2009-10-16 23:15:26