我有一个在linux机器上运行的java应用程序.我使用以下代码运行java应用程序:
java myapp -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000, suspend=n
Run Code Online (Sandbox Code Playgroud)
我在这台Linux机器上为TCP打开了端口4000.我在Windows XP机器上使用eclipse并尝试连接到此应用程序.我也在windows中打开了端口.
两台机器都在局域网上,但我似乎无法将调试器连接到Java应用程序.我究竟做错了什么?
我正在使用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)