5

我和我的同事在 Eclipse 中运行 junit 测试或 tomcat 时遇到间歇性问题。

有时测试会运行。有时他们不会。似乎没有模式,我们不同步。IE 我的可能会运行,而其他的会失败。

停止/启动 Eclipse 可以解决问题(有时)。拔出网络电缆总是可以解决问题(当它拔出时)。

当它失败时,会发生以下情况。在尝试运行该类时,控制台屏幕会出现红色框。控制台屏幕保持空白约 30 秒,然后出现以下内容:

无法连接到: : 2083
java.net.ConnectException: 连接被拒绝: 在 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 .主要(RemoteTestRunner.java:196)

端口号不同。我发现一个论坛帖子告诉我关注这个http://support.microsoft.com/kb/135982 但这不起作用。

我们都在通过 ISA 服务器/代理连接到 Internet 的基于 Microsoft XP 的机器上。我正在运行 Eclipse 3.3.3 和 MyEclipse 6.0.1

请问有什么想法吗?

4

4 回答 4

1

我专注于 junit 而不是 tomcat,因为它更快更容易重现。是的,我看到 McQueeney 链接没有运气。

当您从 Eclipse 运行 junit 时,我们做了更多的挖掘和有趣的工作,Eclipse 决定去检查更新,是的,这是正确的 - 每次您运行 junit(我猜是 tomcat 和其他人)。

我们取消了同事通过 ISA 服务器访问 WWW 的限制,结果问题消失了。

我们仍在监视这是否是解决方案。关注此空间。

我尝试过浏览 Eclipse 设置,看看是否可以阻止它每次访问 WWW,但还没有看到合适的选项。

于 2009-01-12T10:40:11.993 回答
0

一些建议...:

你看过tomcat日志吗?

你在他们身上看到一些ClientAbortException: java.net.SocketException: Broken pipe.吗?

看起来服务器认为客户端有时正在关闭连接。就像客户端正在让服务器重置连接(连接重置),而服务器有时没有监听(连接被拒绝)。

如果您在防火墙/代理服务器后面进行测试,您可能需要向 TomCat 提供防火墙/代理服务器主机名和端口号。

重启eclipse就足够了

显然,Eclipse 中的 JUnit 运行器线程附加到 Eclipse 服务器线程以运行测试。似乎客户端线程试图连接到错误的端口 (3393),或者一直在端口 3393 上侦听运行时请求的服务器线程失败。

McQueeney 找到的解决方案在这里(感谢 Archive.org!)

我觉得有趣的一个建议是:

我必须更改我的 Eclipse 项目使用的 jre,以确保 JUnit 和我的项目使用相同的 jre。重新启动 Eclipse 后,错误消失了。

我希望你能找到一个明确的原因。

于 2009-01-08T16:51:11.927 回答
0

当我的网络驱动程序损坏时,我遇到了同样的问题。

JUnit 和 Eclipse 通过 ICP(InterProcess Communication)进行通信,更好的说法是:通过 TCP。要成功运行它,您必须修复网络驱动程序。

尝试重新安装 TCP/IP 协议或将其转回系统还原点。

祝你好运!

于 2009-01-08T17:03:54.913 回答
0

所以你的 JUnit 只有在连接到互联网的情况下才有效?或者它是一次性的动作,现在它在没有互联网连接的情况下工作?

奇怪的世界……日志文件中是否有任何提示?

于 2009-01-12T12:31:18.713 回答