我如何解决这个问题;java.net.BindException:已在使用的地址:JVM“u Bind”;错误?
在Eclipse中,我遇到了以下错误:我如何解决这个问题;java.net.BindException:已在使用的地址:JVM“u Bind”;错误?,java,eclipse,networking,serversocket,Java,Eclipse,Networking,Serversocket,在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 [j
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
我不知道它为什么会出现在现在,但就在几个小时前它运行良好。我需要重新启动我的机器吗?我该怎么查清楚呢?非常感谢您提供的提示或建议。您在同一端口上运行了另一个进程
您可以尝试终止在任务管理器中运行的一个java.exe服务,请确保您不终止eclipse,因为它也被列为java.exe。如果没有别的办法,重新启动你的机器无论如何都能解决它。看起来您没有关闭以前测试中的套接字。希望这有帮助。如果您知道进程正在运行的端口,可以键入:
lsof-i:
例如,lsof-i:8080
,以列出在端口8080上运行的进程(pid)
然后用kill杀死进程。
kill
该端口已经被其他进程使用,正如@Diego Pino所说,您可以在unix上使用lsof来定位进程并杀死相应的进程,如果您在windows上,请使用netstat-ano获取进程的所有PID和每个人都获得的端口。搜索您想要的端口并杀死
要非常简单,只需重新启动计算机,如果可能的话:)是的,您有另一个进程绑定到同一端口 (仅限Windows)from是我遇到JVM_绑定错误时最喜欢的应用程序。它显示哪些进程正在哪个端口上侦听。它还提供了一个方便的上下文菜单,可以终止进程,也可以关闭阻碍进程的连接 在Mac中: 压井过程 终端:
kill
查找pid:
终端:lsof-i:
从windows中的迭戈皮诺回答
netstat -ano
将列出所有侦听的协议、端口和进程。
使用
终止侦听端口的进程。
e、 g
在Windows CMD行中,输入以下命令,找出在绑定端口上保持连接的进程ID: C:>netstat-a-o -a显示所有连接 -o显示进程标识符
然后终止进程。在Ubuntu/Unix中,我们可以通过如下所述的两个步骤解决此问题
netstat-plten | grep java
这将产生类似于以下内容的输出:
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1001 76084 9488/java
这里,8080
是java进程正在侦听的端口号,9488
是它的进程id(pid)kill
命令终止这个进程
kill -9 9488
9488
是以前版本中的进程id。我们使用-9
强制停止进程您的端口现在应该是空闲的,您可以重新启动服务器。在Eclipse中,当我先启动服务器程序,然后启动客户端程序时,打开了两个控制台,我遇到了类似的问题。我曾经在单一控制台中停止程序,认为它关闭了服务器,但它只关闭了客户端,而没有关闭服务器。我发现在我的任务管理器中运行Java进程。通过关闭服务器和客户端程序各自的控制台(Eclipse显示了最新活动程序的控制台),解决了这个问题。因此,当我再次启动服务器程序时,端口再次打开以便捕获。您的端口在其他进程中一定很忙。因此,您可以在上下载TCPView并终止已使用端口的进程 如果您不知道自己的端口,请双击未启动的服务器,然后单击“打开服务器属性”页面,然后从左栏单击glassfish。您将在此处找到端口。(1)检查端口是否正在使用,终止该进程 $lsof-i:[端口] (2) 另一个原因是ipv6使用该端口,解决方案: 编辑/etc/sysctl.conf 将此添加到文件中 net.ipv6.conf.all.disable_ipv6=1 然后让它生效 $sudo sysctl-p/etc/sysctl.conf
或者只需重新启动对于那些正在寻找最简单答案的人(因为这是我们通常错过的),只需停止正在运行的项目并重新启动即可。 大多数情况下,我们所做的是忘记停止我们之前运行的项目,当我们重新运行项目时,它显示了这样一个问题 我还附上了一张照片,以使其更清晰(我使用“弹簧工具套件”)。 因此,如果你想重新启动同一个项目,你需要做的是单击最右边的按钮,或者首先单击从右边第二个按钮停止你的项目,然后单击最左边的按钮运行你的项目。我希望这将解决少数较新程序员的问题。:)
是的,正如Guido Simone所说的,因为另一个进程正在监听同一个端口。如果你在Ubuntu中,你可以通过发出命令简单地杀死这个进程
sudo kill$(sudo lsof-t-i:[端口号])
例如:sudo kill$(sudo lsof-t-i:8080)
但有一次,它对我不起作用。
我下达了命令
$ lsof -i:[port]
它什么也看不出来
我使用命令检查了我的docker容器
docker ps-a
但其中没有一个处于活动状态。所有容器都已停止
(但我记得,几分钟前我停止了一个使用相同端口的容器。)为了确保docker不是原因,我使用命令sudo service docker stop
停止整个docker进程,然后重试。
令人惊讶的是,eclipse当时没有显示错误。它完美地运行了我的程序
希望我的经验能对某些人有所帮助。这意味着其他进程已经在使用该端口。如果该端口正被其他一些关键应用程序使用,而您不想关闭该应用程序,那么最好的方法是选择任何其他可以自由使用的端口 将应用程序配置为使用任何其他免费和可用的端口
kill -9 9488
$ lsof -i:[port]
netstat -ano | findstr :yourPortNumber
taskkill /pid yourid /f
fuser -k 8080/tcp
$ sudo service tomcat stop
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 18856
sudo kill -9 $(sudo lsof -t -i:8080)
taskkill /F /IM java.exe