在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

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


当前回答

端口已经被一些其他进程使用,@Diego Pino说你可以在unix上使用lsof来定位进程并杀死相应的进程,如果你在windows上使用netstat -ano来获得所有进程的pid和每个人获得的端口。搜索你的目标港口并杀死。

如果可能的话,重启你的机器就很简单了:)

其他回答

在windows中

netstat -ano

将列出所有监听的协议、端口和进程。 使用

taskkill -pid "proces to kill" /f

关闭侦听该端口的进程。 如

 taskkill -pid 431 /f

在Mac:

杀进程 Terminal: kill <pid>

找到pid: 终端:lsof -i:<端口>

来自Diego Pino的回答

对于windows:

查找进程id Netstat -nao |查找8080

它将以数字的形式向您显示进程ID。

例子:

TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       18856

这里18856是进程ID

终止这个过程 taskkill /PID 18856 /F

输出:SUCCESS: PID为18856的进程已被终止。

在这里使用taskkill是在杀死进程ID:18856

linux / Mac:

sudo kill -9 $(sudo lsof -t -i:8080)

在这里,您可以使用sudo lsof -t -i:8080找到端口8080的进程,并使用sudo kill命令杀死它

当另一个进程已经在指定端口(8080)上运行时,就会出现这个BindException异常。

您可以使用以下方法中的任何一种。

修改服务器端口号:如果使用Tomcat服务器和IntelliJ IDE,可以通过配置Tomcat服务器来配置服务器端口号

or

进入“tomcat>conf”文件夹 编辑server.xml 搜索“连接器端口” 将“8080”替换为端口号 重启tomcat服务器。

终止该端口中正在运行的现有进程并启动服务器。

对于Linux / Mac Sudo kill -9 $(Sudo lsof -t:8080) 对于Windows Netstat -ano | findstr:8080 taskkill /PID typeyourPIDhere /F 注意:(/F强制终止进程)

在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强制停止进程。

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