在Eclipse中,我得到了这个错误:

run:
     [java] Error creating the server socket.
     [java] Oct 04, 2012 5:31:38 PM cascadas.ace.AceFactory bootstrap
     [java] SEVERE: Failed to create world : java.net.BindException: Address already in use: JVM_Bind
     [java] Java Result: -1
BUILD SUCCESSFUL
Total time: 10 seconds

我不知道为什么现在出现了,但几个小时前它运行得很好。我需要重新启动我的机器吗?我该怎么查到底呢?感谢您的建议和建议。


当前回答

是的,正如Guido Simone所说,这是因为另一个进程侦听相同的端口。如果你使用的是Ubuntu,你可以简单地杀死这个进程 Sudo kill $(Sudo lsof -t:[端口号])

sudo kill $(sudo lsof -t:8080)

但有一次它对我不起作用。 我下了命令

$ lsof -i:[port] 

它什么也没有显示。

我使用命令检查了我的docker容器 Docker ps -a,但他们都死了。所有集装箱都停了 (但我记得,我停了一个集装箱,几分钟前使用的是同一个港口。)为了确保docker不是原因,我使用命令sudo service docker stop停止整个docker进程,然后再试一次。 令人惊讶的是eclipse当时并没有显示错误。它完美地运行了我的程序。

希望我的经验能帮助到一些人。

其他回答

这意味着其他进程已经在使用该端口。如果这个端口正在被其他一些重要的应用程序使用,而您不想关闭该应用程序,那么更好的方法是选择任何其他可以自由使用的端口。

将应用程序配置为使用任何其他空闲端口,您将看到应用程序正常工作。

在Ubuntu/Unix中,我们可以通过以下两步来解决这个问题。

输入netstat -plten |grep java 这将给出一个类似于: tcp 00 0.0.0.0:8080 0.0.0.0:* LISTEN 1001 76084 9488/java 这里8080是java进程监听的端口号,9488是进程id (pid)。 为了释放被占用的端口,我们必须使用kill命令终止该进程。 杀死-9 9488 9488是之前的进程id。我们使用-9强制停止进程。

您的端口现在应该是空闲的,您可以重新启动服务器。

你可以关闭所有的Java进程,然后重新启动你的应用程序:

taskkill /F /IM java.exe

再次启动应用程序…

重新启动电脑一次,我想它会工作。它开始在我身上起作用。还有一件事可以做,进入任务管理器并结束该过程。

您的端口在其他进程中一定很忙。因此,您可以在https://technet.microsoft.com/en-us/sysinternals/bb897437上下载TCPView并为使用的端口终止进程。

如果你不知道你的端口,双击没有启动的服务器,然后点击打开服务器属性页,然后点击左边栏的glassfish。你会在这里找到港口。