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

问题描述 投票:0回答:10

我在控制台上遇到异常:

java.lang.Exception: Port 8083 already in use.

如何解决这个异常?如果我知道哪个服务正在使用 8083 端口,那么我可以停止该服务,这样我就可以解决这个问题。

感谢您的帮助!

java networking admin
10个回答
12
投票

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

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

kill -9
或其他东西来杀死它。

lsof
是找出哪个应用程序打开端口的好工具。这应该至少可以在大多数 Unixes (Linux) 和 MacOSX 下工作。

lsof -i :8083

lsof
用于列出系统上打开的文件,但
-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]

6
投票

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

从命令行使用

netstat -a
将显示开放端口的列表以及正在使用它们的进程。比你能杀死它。

更新:

在 Windows 上,您可以使用

netstat -ao
列出所有正在使用的端口以及拥有该连接的进程 ID。

在 Linux 上,您可以使用

netstat -p
列出进程 ID/程序名称。


6
投票

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

对于 Mac OS X

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

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

kill -9 process_id_goes_here


1
投票

异常意味着:已经有一个开放的端口“8083”。您可以通过停止该服务或自己使用不同的端口来解决该问题。

我猜当您尝试启动它时,您自己的服务已经在运行,因此在启动新实例之前先停止旧实例。

(我知道 Tomcat 在 8080 上运行,有时人们将其更改为 8083,但任何人都不可能知道使用该端口在您的计算机上运行什么服务。)


0
投票

终止使用端口 8083 的进程或将应用程序配置为在另一个端口上运行。智能应用程序会尝试自动使用备用端口。


0
投票

如果您正在启动服务器来部署应用程序,则可能会发生任何其他进程或应用程序正在使用该端口的情况。 Outlook、Skype 或其他应用程序有时会在我的工作中执行此操作。使用像 CPorts 这样的程序来终止该连接并重新启动服务器。


0
投票

还有另一种可能性:您可能尝试绑定到错误的 IP 地址 - JBoss 会报告此情况为无法绑定到端口。

根据 run.sh 检查 -b 选项,并确保它是 0.0.0.0 或服务器的 IP 或主机名。
- 如果是 0.0.0.0,则问题在于该端口正在使用中。
- 如果是 IP,请使用 /sbin/ifconfig(或 Windows 上的 ipconfig)验证它是否是正确的 IP
- 如果是主机名,则运行
telnet 主机名_此处
并验证解析的 IP 地址是否是正确的 IP 地址。

我遇到了这个问题,我发现有人在 /etc/hosts 文件中输入了错误的 IP 地址。一旦我修复了文件,JBoss 就开始正常了。


0
投票

在 Eclipse 中,如果出现此错误,则意味着有一两个 Eclipse 实例使用同一端口。

解决方案是转到操作系统的进程管理器并杀死 Eclipse 和 java 进程。


0
投票

确保文件conf/bindingservices.beans/META-INF/bindings-jboss-beans.xml中两个JBOSS实例的端口不同

大约有10个端口需要更改


0
投票

如果您使用的是 Windows 操作系统,您可以在命令提示符下执行以下命令:

response of the netstat -ano | findstr :8083 command

  • netstat -ano |查找字符串:8083

输入命令后,我们到达监听号码(本例中监听号码:3680)。

达到这个数字后,我们可以写这个命令:

  • taskkill /PID 3680 /F

response of the taskkill /PID 3680 /F command

© www.soinside.com 2019 - 2024. All rights reserved.