我正在使用 Eclipse 开发 Java 程序,并且想在程序中添加一个选项来在没有参数的情况下解析 stdin。 (否则它会解析文件)
如果我执行的话我会遇到问题"somecommand | java -jar myjar.jar"
然后去调试...然后意识到我不知道如何在 Eclipse 中启动这样的进程。如果我在命令提示符下运行它,我无法附加到正在运行的进程,因为该进程立即启动。
关于如何调试有什么建议吗?
edit:看,问题是,我最初编写程序是为了采用文件名参数。然后我认为它也可以使用标准输入,所以我did从我的程序中抽象出InputStream(正如队列先生所建议的那样)。它在文件上运行良好(java -jar myjar.jar myfile
),但运行时不运行type myfile | java -jar myjar.jar
。我怀疑这两种情况有什么不同(eof 检测不同?),但我真的很想调试。
// 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);
}
}
使用管道在命令行上运行您的应用程序,但添加 JVM 参数以进行远程调试,如下所示:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=1044
suspend=y
将告诉 JVM 在附加调试器之前不要实际运行程序。
接下来,进入 Eclipse 调试启动配置(Run -> Debug Configurations...
)并创建一个“远程 Java 应用程序”来连接到您的应用程序。在 Eclipse 中运行启动(设置一些断点后),您应该能够进行调试。不是很方便,但如果您无法在没有管道的情况下重现问题,这是一个选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)