java – 运行应用程序时eclipse挂起(应用程序运行正常,eclipse是什么挂起)

我有一个应用程序,当通过eclipse运行时会导致eclipse本身挂起.如果我将此应用程序导出为jar并运行它,它可以正常工作.但是如果我运行(或调试)它,应用程序似乎将启动(根据ps)并运行;但是eclipse本身会挂起,并被报告为没有CPU或内存使用的“已停止”程序.我在这个应用程序的第一行放置了一个断点,它甚至没有在eclipse结束停止之前到达那里.如果我强行将eclipse从停止的状态中唤醒,它将起作用;但它也会失去与我开始的程序的联系.我想要调试的程序将继续运行,但是在我恢复停止的日食之后,eclipse无法控制或杀死它.

我可以在没有eclipse问题的情况下运行大量其他应用程序.奇怪的是我之前遇到过这个问题,然后我可以运行我的应用程序一天,现在我又回到原来的问题了.我不知道那些重要的事情之间发生了什么变化.

任何人都可以建议可能导致此问题或如何修复它?

更新:

我做了一些更多的Linux魔法.看来eclipse在等待命令时停止了:
    sh -c stty -lcanon min 1

在此之前,似乎还有一个sh(已解散)命令,该命令也悬挂而没有被收获几分钟,我认为这样可以防止日食正常运行;如果我等了足够久,sh(已解散)最终会消失;但是我刚刚联系的sh命令出现了.我不知道原来已解散的SH命令是什么;我不能做得足够快,以便在它消失之前抓住它.这两个问题只发生在日食中;作为一个jar文件,这个程序运行得很好.

我的运行假设是eclipse无法正确获取或处理sigchild?这至少可以解释sh(已解散)的应用.它没有解释当前的SH命令没有显示为不存在;尽管它应该在几秒钟内执行?

更新2.0:

我发现这个链接:http://linux.about.com/od/srl_howto/a/hwtsrl13t04_3.htm基本上stty已知在使用<时挂起/ dev / tty语法;这就是为什么不推荐使用语法并将其替换为更新的语法.我很确定这是问题所在.遗憾的是,我无法弄清楚哪个库正在使用已弃用的命令.我想这一切都始于构建的ConsoleReader;但谁知道什么代码实际运行冻结的命令?而且,似乎这是因为在Linux环境中从eclipse运行consoleReader的任何人都会遇到同样的问题;我认为可以安全地假设不是这种情况,或者它将在整个网络上记录;也许我的理解还没有结束?

最佳答案
它与为附加控制台而创建的stty进程的配置有关,因此仅在类似UNIX的系统上发生.似乎固定在当前的2.11 jline版本上.

要绕过此问题,您可以使用以下命令禁用特殊的unix-terminal功能:

-Djline.terminal =无

作为eclipse启动配置的VM参数.

转载注明原文:java – 运行应用程序时eclipse挂起(应用程序运行正常,eclipse是什么挂起) - 代码日志