java.lang.Exception:端口8083已在使用中

S S*_*ngh 8 java networking admin

我在控制台上遇到异常,它是:

java.lang.Exception: Port 8083 already in use.
Run Code Online (Sandbox Code Playgroud)

如何解决此异常?如果我将获得使用8083端口的服务,那么我可以停止该服务,这样我就可以解决这个问题.

谢谢你的帮助!

Gra*_*ray 11

java.lang.Exception:端口8083已在使用中.

该错误意味着另一个应用程序已经绑定了该端口,因此您无法使用它.通常,这意味着服务器正在运行(或正在退出),但仍然打开特定端口.当您尝试关闭一台服务器并启动新版本时,通常会出现此错误,但第一台服务器在启动新服务器时并未完全关闭.您需要找到有问题的服务器,您可能必须使用kill -9或其他东西杀死它.

找出哪个应用程序打开端口的好工具是lsof.这至少应该适用于大多数Unix(Linux)和MacOSX.

lsof -i :8083
Run Code Online (Sandbox Code Playgroud)

lsof用于LiSting系统上的打开文件,但-i选项是用于Internet地址:

-i [i]   This option selects the listing of files any of whose Internet
         address matches the address specified in i.
        [46][protocol][@hostname|hostaddr][:service|port]
Run Code Online (Sandbox Code Playgroud)


Cas*_*sey 6

抛出异常是因为您尝试绑定到另一个进程已在使用的端口.

netstat -a从命令行使用将显示打开端口列表以及正在使用它们的进程.比你可以杀了它.

更新:

在Windows上,您可以使用netstat -ao列出所有正在使用的端口以及拥有该连接的进程ID.

在Linux上,您可以使用netstat -p列出进程ID /程序名称.

  • @Gray我认为有一个-p标志可以用来显示进程的名称 (2认同)

Ben*_*min 6

我偶尔会用JBoss服务器得到这个.您需要重新启动Java并不直观,但上述方法不起作用.

对于Mac OS X:

  1. 打开活动监视器.
  2. 过滤"java"
  3. 退出任何进程(通常只有一个进程).
  4. 重启服务器.

快速

ps aux | grep 'java' 列出当前的Java进程及其ID.

kill -9 process_id_goes_here