昨天下午在 eclipse 中调试壹個 Java 程序,结果前面几次启动调试器都是正常进入断点,后来我退出了调试,再次以 Debug 模式启动程序时,eclipse 弹出壹個窗口,报出如下
错误信息:
class="java">Can not find a free socket for the debugger in eclipse.
这种错误之前从未见过,当时令我非常的莫名其妙,于是把这串文本作为
关键字 Google 了壹把,还真让我找到了,Stackoverflow 上有個国外网友也遇到了同样的问题,而且看他的描述,与我遇到错误时的情景几乎壹样。
when i try to debug the java programe , it says "Cannot find a free socket for the debugger in eclipse".Could you explain how to resolve the error ?
以下是网友们提供的在 Windows 环境下壹個不太确定的
解决方法:
The usual checks (some are Windows specifics) are:
?switch off the vista firewall (it wasn't activated, to be precise)
?add a firewall rule for java.exe/javaw.exe/eclipse.exe and reactivated it (just to be sure it didn't interfere although it was deactivated)
?deactivated my antivirus tool (avira antivir)
?ran eclipse as administrator
?disabled UAC
?activated/deactivated wired and wireless network interfaces
?changed priorities of the network interfaces
?used different jvms (1.6 and 1.7)
?created an entirely new workspace
比较遗憾的是,问题下方的网友答案对于我而言无壹点用处。为什么我这麽确定呢,因为同样的环境同样的条件,我在前面几次调试中并没有发生这個错误,但是重复壹段时间之后错误才会出现,所以可以确定是其它的外部因素引起的问题。
我继续想了想,
发现壹個比较重要的线索就是,我们的程序
堆栈中报了
NullPointerException,而报错的地方是读取 SQL
脚本写数据库的操作,于是我想,IO 流对象和文件路径都正确无误的情况下,那最大的嫌疑人肯定就是数据库连接了,马上检查了下获取 Connection 实例的地方,再问问同事,反映的情况是我们当前在使用的数据库还有很多用户也在使用,那麽问题就可以确定为连接数过多导致的失败了。我们随即登录管理端,清除了几個状态处于 IDLE 的连接,再次重新启动 eclipse ,问题解决。