Jas*_*n S 6 java eclipse stdin
我正在使用Eclipse开发一个Java程序,并且我想在我的程序中添加一个选项来解析stdin,如果没有参数的话.(否则它解析文件)
如果我执行"somecommand | java -jar myjar.jar"并进行调试,我遇到了问题...然后意识到我不知道如何在Eclipse中启动一个进程.如果我在命令提示符下运行它,我就无法附加到正在运行的进程,因为进程立即启动.
有关如何调试的任何建议?
编辑:看,事情是,我最初编写我的程序采取文件名参数.然后,我想这将是有益的它采取标准输入一样,所以我做了抽象的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);
}
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*Ray 11
使用管道在命令行上运行您的应用程序,但添加JVM args以进行远程调试,如下所示:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=1044
Run Code Online (Sandbox Code Playgroud)
suspend=y 将告诉JVM在连接调试器之前不实际运行程序.
接下来,进入Eclipse调试启动配置(Run -> Debug Configurations...)并创建一个"远程Java应用程序"以连接到您的应用程序.在Eclipse中运行启动(在设置一些断点之后),您应该能够进行调试.不是非常方便,但如果你不能在没有管道的情况下重现你的问题,这是一个选择.
| 归档时间: |
|
| 查看次数: |
5291 次 |
| 最近记录: |