发生内部错误:"TestNG Result Listening Job"。端口值超出范围:-1

An internal error occurred during: "TestNG Result Listening Job". Port value out of range: -1

在 2017 年 1 月 2 日安装 eclipse 更新后,即使之前的工作测试也出现错误:

An internal error occurred during: "TestNG Result Listening Job". Port value out of range: -1

我用谷歌搜索了如何解决这个问题 - 将 JRE 更新到最新版本 1.8。0_112 并卸载了 TestNG-Maven 集成插件,但仍然出现错误。有人可以帮我解决这个问题吗?

控制台:

java.lang.IllegalArgumentException: port out of range:-1 at java.net.InetSocketAddress.checkPort(Unknown Source) at java.net.InetSocketAddress.(Unknown Source) at java.net.Socket.(Unknown Source) at org.testng.remote.strprotocol.BaseMessageSender.connect(BaseMessageSender.java:60) at org.testng.remote.strprotocol.MessageHub.connect(MessageHub.java:31) at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:105) at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:236) at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:81)

错误日志:

java.lang.IllegalArgumentException: Port value out of range: -1 at java.net.ServerSocket.(Unknown Source) at java.net.ServerSocket.(Unknown Source) at org.testng.remote.strprotocol.BaseMessageSender.initReceiver(BaseMessageSender.java:127) at org.testng.eclipse.ui.TestRunnerViewPart.run(TestRunnerViewPart.java:444) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

谢谢!

我不确定为什么在您的本地无法获得空闲端口:

public static int findFreePort() {
// Nick: either here throws IOException
    try (ServerSocket socket = new ServerSocket(0)) {
// Nick: or, here return -1
        return socket.getLocalPort();
    } catch (IOException e) { 
    }
    return -1;      
}

made an update for JRE to the last version 1.8.0_122

您是指 JRE 1.8.0_112(而不是 122)吗? 你有什么杀毒软件会影响代码吗?

或者你能不能把上面的代码放到一个简单的one-class java app中,打印出findFreePort的return值,如果能重现的话再debug在这个简单的应用程序中?

我恢复了我的 Windows 10 并且没有任何错误了。看起来 Java、Eclipse 或我的代码

都没有问题

这听起来像是Winsock 问题,而不是testNG 本身的问题。你 可以按照以下步骤将 Winsock 安装重置为设置默认值 此 KB article.

中的说明

尝试以下简短步骤:

  1. 在命令提示符下 运行 netsh winsock reset
  2. 重启电脑