我正在Eclipse上做我常用的项目,它是一个J2EE应用程序,使用了Spring、Hibernate等等。我使用Tomcat7来做这件事(没有特别的原因,我没有开发任何新功能,我只是想尝试一下)。每次我调试我的应用程序时,Eclipse调试器就像它到达了断点一样弹出,但事实并非如此,实际上它在一个为ThreadPoolExecutor的Java源文件上停止。控制台上没有堆栈跟踪,它只是停止。然后,如果我点击resume,它就会打开,应用程序就会完美地工作。以下是调试器窗口中显示的内容:
Daemon Thread ["http-bio-8080"-exec-2] (Suspended (exception RuntimeException))
ThreadPoolExecutor$Worker.run() line: 912
TaskThread(Thread).run() line: 619我真的无法解释这一点,因为我根本没有使用ThreadPoolExecutor。必须是来自Tomcat、Hibernate或Spring的内容。这非常烦人,因为我总是要在调试过程中恢复。
有什么线索吗?
发布于 2011-06-09 18:01:14
posted堆栈跟踪表示在守护程序线程中遇到了RuntimeException。这通常是在运行时未捕获到的,除非原始开发人员捕获并处理了异常。
通常,Eclipse中的调试器被配置为对所有未捕获的异常在抛出异常的位置挂起执行。请注意,异常可能会在稍后处理,在堆栈帧的较低位置,并且可能不会导致线程被终止。这将是观察到的行为的原因。
配置Eclipse的行为非常简单:
转到Window > Preferences > Java > Debug并取消选中Suspend execution on uncaught <代码>E211。
发布于 2013-04-04 17:18:51
有一个更具体的解决方案,它可以防止Eclipse在仅从给定类抛出的RuntimeException上中断。
从调试角度添加新的选定异常断点位置从调试角度转到其properties
java.util.concurrent.ThreadPoolExecutor
“<
发布于 2014-05-06 05:19:28
此行为由tomcat在重新加载when应用程序时触发。它是tomcat "memory leak protection" feature的一部分,强制更新它的线程。
从tomcat:https://issues.apache.org/bugzilla/show_bug.cgi?id=56492的7.0.54和8.0.6版本开始,这个问题已经修复
https://stackoverflow.com/questions/6290470
复制相似问题