我和我的同事在Eclipse中运行junit测试或tomcat时出现间歇性问题。
有时测试会运行。 有时他们不会。 似乎没有模式,我们没有同步。我的IE可能会运行而其他人会失败。
停止/启动Eclipse可以解决问题(有时)。 拔出网线始终解决问题(当它出局时)。
失败时会发生以下情况。 在尝试运行该类时,控制台屏幕显示红色框。 控制台屏幕保持空白约30秒,然后出现以下内容:
无法连接:: 2083
java.net.ConnectException:连接 拒绝:联系 java.net.PlainSocketImpl.socketConnect(母语 方法)at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) 在 java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) 在 java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) 在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) 在 java.net.Socket.connect(Socket.java:520) 在 java.net.Socket.connect(Socket.java:470) 在 java.net.Socket中。(Socket.java:367) 在 java.net.Socket中。(Socket.java:180) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.connect(RemoteTestRunner.java:560) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:377) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
端口号各不相同。 我发现了一个论坛帖子,告诉我这样做http://support.microsoft.com/kb/135982 但这没效果。
我们都在基于Microsoft XP的机器上通过连接到互联网 ISA服务器/代理。 我正在运行Eclipse 3.3.3和MyEclipse 6.0.1
有什么想法吗?
答案 0 :(得分:1)
我专注于junit而不是tomcat,因为它更快更好更容易重现。 是的,我没见过McQueeney的链接。
当你从Eclipse运行junit时,我们已经做了一些挖掘和有趣的事情,Eclipse决定去&检查更新,是的,这是正确的 - 每次你运行一个junit(&我猜tomcat和其他人)。
我们通过ISA服务器删除了同事对WWW的访问限制。看哪,问题就消失了。
我们仍在监控此问题,看看它是否是解决方案。 看这个空间。
我已经尝试过查看Eclipse设置,看看我是否可以阻止它每次都到WWW,但还没有看到合适的选项。
答案 1 :(得分:0)
一些建议......:
你看过tomcat日志吗?
你在其中看到一些ClientAbortException: java.net.SocketException: Broken pipe.
吗?
看起来服务器认为客户端有时会关闭连接。 并且客户端正在通过服务器重置连接(连接重置),并且服务器有时没有监听(连接被拒绝)。
如果您从防火墙/代理服务器后面进行测试,则可能需要向TomCat提供防火墙/代理服务器主机名和端口号。
Restarting eclipse should be enough:
显然,Eclipse中的JUnit运行程序线程附加到Eclipse服务器线程以运行测试。似乎客户端线程试图连接到错误的端口(3393)或者已经在端口3393上侦听运行时请求的服务器线程失败。
解决方案McQueeney发现is here(谢谢Archive.org!)
我觉得有趣的一个建议是:
我不得不改变我的Eclipse项目使用的jre,以确保JUnit和我的项目使用相同的jre。重新启动Eclipse后,错误消失了。
我希望你能找到明确的原因。
答案 2 :(得分:0)
当我的网络驱动程序坏了时,我遇到了同样的问题。
JUnit和Eclipse通过ICP(InterProcess Communication)进行通信,更好地说:通过TCP。 要成功运行它,您需要修复网络驱动程序。
尝试重新安装TCP / IP协议或将其转回系统还原点。
祝你好运!答案 3 :(得分:0)
所以只有与互联网连接,你的JUnit才有效吗? 或者它是一次性动作,现在,它没有互联网连接吗?
奇怪的世界......日志文件中是否有任何提示?