Tomcat 服务器在 localhost 所需的几个端口(8005、8080、8009)已在使用中

Posted

技术标签:

【中文标题】Tomcat 服务器在 localhost 所需的几个端口(8005、8080、8009)已在使用中【英文标题】:Several ports (8005, 8080, 8009) required by Tomcat Server at localhost are already in use 【发布时间】:2022-01-03 09:49:10 【问题描述】:

当我尝试在 Eclipse 中的 Tomcat 上运行一个简单的 JSP 程序时,出现以下错误。

Tomcat v6.0 服务器在 localhost 所需的多个端口(8005、8080、8009)已在使用中。服务器可能已经在另一个进程中运行,或者系统进程可能正在使用该端口。要启动此服务器,您需要停止其他进程或更改端口号。

这是怎么引起的,我该如何解决?

【问题讨论】:

我有一个类似的问题,原来是windows防火墙。 可能是一些不死的进程让你的tomcat活着。通过找到它的 ID 并终止它或重新启动您的机器来终止该进程。 您可以使用这些命令从命令控制台停止已经运行的 tomcat 服务。 netstat -ano | findStr 8080找到正在运行的服务,然后找到进程id并复制pid并再次以taskkill /F /PID pid_number运行命令 【参考方案1】:

您已经运行了另一个 Tomcat 实例。您可以通过在您的网络浏览器中转到http://localhost:8080 来确认这一点,并检查您是否获得了 Tomcat 默认主页或 Tomcat 特定的 404 错误页面。两者都是 Tomcat 运行良好的同样有效的证据。如果没有,那么您将收到特定于浏览器的 HTTP 连接超时错误消息。

您需要关闭它。转到 Tomcat 安装文件夹的 /bin 子文件夹并执行 shutdown.bat (Windows) 或 shutdown.sh (Unix) 脚本。如果无效,请关闭 Eclipse,然后打开任务管理器并杀死所有 java 和/或 javaw 进程。

或者,如果您出于某种原因将其实际安装为 Windows 服务(即用于生产,并且在您刚开发时无益),请打开服务管理器(开始 > 运行 > services.msc) 并停止 Tomcat 服务。如有必要,请完全卸载 Windows 服务。对于开发,只需 ZIP 文件就足够了。

或者如果你的实际意图是同时运行两个Tomcat实例,那么你必须配置第二个实例来监听不同的端口。有关详细信息,请参阅 Tomcat 文档。

【讨论】:

完美,这一直困扰着我。我在 /bin 目录中的终端中以sh shutdown.sh 的形式执行它。 你好 BalusC,我喜欢你!我的 bin 文件夹中没有 shutdown.bat。 Tomcat 是作为服务安装的,而不是作为 zip 安装的。在服务中停止 tomcat 服务解决了这个问题。谢谢。陈奎。 @Borat:不客气。请记住,您最好卸载该服务并获取 zip。 “杀死所有 java 和/或 javaw 进程”对我有用,谢谢。 打开system monitortask manager 并杀死使用about 400 MB 或更多RAM 的java 进程也将解决问题。它在不知不觉中保留了进程。【参考方案2】:

我没有另一个正在运行的 Tomcat 实例,也没有其他使用“Tomcat 端口”(在我的例子中是 8088 端口)的进程。 Eclipse 在启动 Tomcat 时发送相同的消息:

....服务器可能已经在另一个进程中运行,或者系统进程可能正在使用该端口。要启动此服务器,您需要停止其他进程或更改端口号。

我是这样解决问题的:

提示进入tomcat的bin 启动startup.bat 启动shutdown.bat 通过 Eclipse 启动 tomcat

【讨论】:

我的问题是 8005 和 8009 端口很忙,但是 8080 端口是空闲的,当时没有运行 tomcat 安装。您的解决方案帮助我解决了这个问题,谢谢。【参考方案3】:

参考以下博客《如何在不重启电脑的情况下杀死tomcat》

http://stanicblog.blogspot.fr/2012/01/how-to-kill-apache-tomcat-without.html

希望这对将来的某人有所帮助。

【讨论】:

上面的链接失效了。这一篇指向好的博客文章:stanicblog.blogspot.fr/2012/01/… 请不要在未提及重要部分的情况下添加阅读链接。因为人们在这里得到答案。【参考方案4】:

如果您在 Eclipse 中使用 Java EE 并尝试在 Eclipse 中以调试模式启动 Tomcat 服务器,那么您将收到此类错误。您必须在 Eclipse 中切换到调试预期。我已经像这样解决了我的问题。

【讨论】:

【参考方案5】:

如果您使用 Eclipse,然后双击服务器并双击 tomcat 服务器然后将打开一个文件。在该文件中将 HTTP 端口更改为其他端口号并保存 (Ctrl+S) 然后再次启动服务器。

【讨论】:

这对我有用,而其他解决方案却没有。我正在使用薄荷 17.1。我不得不通过 Eclipse 和 apt-get 安装 tomcat,因为我找不到 apt-get 安装它的文件夹。所以这大概就是我有两个的原因。我仍然无法使用 kill 命令关闭第一个。【参考方案6】:

如果您在 Windows 上运行,请在命令行提示符下尝试:

netstat -ano

这将显示所有正在使用的端口以及正在使用该端口的进程的进程 ID PID #。 然后Ctrl+Alt+Del打开任务管理器看看是哪个进程。

然后您可以选择关闭/停止它或将您的服务器配置为使用另一个端口。 要检查新选择的端口(比如 8010)是否可用,请执行以下操作:

netstat -ano | grep 8010

如果它没有返回任何行,那么你很好。

要更改端口,请转到服务器视图,打开 server.xml 并在此处更改端口。 我的有这个条目:

Connector port="8010" protocol="AJP/1.3" redirectPort="8443"

【讨论】:

请查看我的新答案,其中包含一个 PowerShell 脚本来自动执行此操作,而无需您打开任务管理器。 findstr 对于那些没有 grep 的人。【参考方案7】:

在 Eclipse 上,原始删除项目“服务器”下的 Tomcat 配置文件夹。 我作为最后的希望尝试了它,它成功了。

【讨论】:

【参考方案8】:
kill $(ps -aef | grep java | grep apache | awk 'print $2')
无需重启 Eclipse 如果出现上述错误,直接在终端输入这一行 再次在 Eclipse 中启动 tomcat。 仅适用于基于 Linux 的系统 (Ubuntu ..etc)

【讨论】:

这个更好kill $(ps -aef | grep java | grep apache | awk 'print $2') 这对我不起作用(Mint 17.1)。它只是给了我kill 命令的帮助。 这对我有用。但是我想知道我是否有 2 个实例正在运行并且我必须使用这种方法强制停止一个,我该如何确定要关闭哪个。谢谢【参考方案9】:

阅读所有建议的答案后我做了什么,并且我知道我的端口已经在使用中。我在eclipse中的Servers选项卡下双击Tomcat,它打开了概述信息,然后找到了端口信息。刚刚更改了冲突端口,因为我的是 8009 端口(启动服务器时提到的错误)。我已将其更改为 8008,它工作正常。如果更改的端口没有被使用,请尝试服务器将启动。

【讨论】:

【参考方案10】:

如果 Eclipse 说

Tomcat v6.0 服务器在 localhost 所需的多个端口(8005、8080、8009)已在使用中

出现此错误是因为 tomcat 可能在后台运行,因此请先停止该服务器..按照以下详细信息进行操作。

解决办法是:

    打开“控制台”视图(窗口->显示视图->控制台) 然后停止 tomcat 服务器。 然后打开“服务器”视图并启动它会工作的服务器。

谢谢!

【讨论】:

这对我有用。我只试过:sudo service tomcat stop【参考方案11】:

在 windows 的情况下,我体验了一个新的东西...... 从 /bin 文件夹停止 tomcat 不会立即释放端口 8080。释放端口大约需要 5-10 分钟。如果我尝试运行我的项目,再过 10 分钟 运行-> 在服务器上运行 .. 它允许运行。

我不确定我的理解是否正确!

【讨论】:

【参考方案12】:

对我有用的更简单的修复方法是通过“服务器”选项卡从 tomcat 中删除我当前部署的 webapp。一旦我删除它们,问题就会消失。只需通过 Run As > Run on Server 重新部署您的项目。

【讨论】:

【参考方案13】:

本地主机上的 Tomcat vX.X 服务器所需的多个端口(8005、8080、8009)已在使用中

要检查另一个 Tomcat 实例是否已经在运行或其他进程是否正在使用您可以使用的端口:

netstat -b -a 在 Windows 的命令提示符下。这列出了正在使用的端口,并为您提供了正在使用每个端口的可执行文件。您需要在管理员组中才能执行此操作。

你可能会得到这样的东西:

TCP 192.168.0.1:8009 192.168.0.1:0 LISTENING 196 [Tomcat7.exe]

TCP 192.168.0.1:8080 192.168.0.1:0 LISTENING 196 [Tomcat7.exe]

TCP 192.168.0.1:8005 192.168.0.1:0 LISTENING 196 [Tomcat7.exe]

打开任务管理器Ctrl+Shift+Esc,然后杀死Tomcat7.exe或使用这些端口的任何其他进程。

【讨论】:

请查看我的新答案,其中包含一个 PowerShell 脚本来自动执行此操作。【参考方案14】:

当项目中的其他人也使用与您相同的端口号时,就会发生这种情况! 双击 tomcat 服务器,将端口号更改为 8585 或其他任何值。代码现在将开始运行!

【讨论】:

【参考方案15】:

有时如果在尝试shutdown.bat 后端口仍未释放,@BalusC 建议,您可以终止 javaw 进程。执行以下步骤:

    点击开始菜单并打开“Windows powershell” 打开前右击选择“以管理员身份运行”

    输入命令 ps。您可能会看到如下图像:

    查看进程“javaw”的进程号。进程号是列中最右边的数字,例如我在图像中突出显示了javaw的进程号。

    输入命令 kill 。 javaw 已被杀死,现在您必须能够运行该程序。

【讨论】:

请查看我的新答案,其中包含一个 PowerShell 脚本来自动执行此操作。【参考方案16】:

解决问题的简单方法:

服务器可能已经在另一个进程中运行,或者系统进程可能正在使用该端口。要终止该端口,请执行以下操作:

1) 从以下链接下载 TCPView(仅 285kb)

http://technet.microsoft.com/en-in/sysinternals/bb897437.aspx

2) 解压文件夹并启动TCPView应用程序。

3) 右键java.exe(因为java进程常用8009,8005端口),选择结束进程选项。

这将很容易停止另一个进程..

注意:运行 TOMCATPATH/bin/shutdown.bat 可能不会在 Tomcat 包含一些恶魔或非托管时关闭 线程。在这种情况下,TCPView 可以正常工作,没有任何问题。

【讨论】:

【参考方案17】:

如果你在 mac 环境下,here 是我做的。

从终端查找此端口上运行的进程ID,例如8080:

lsof -i :8080

杀死它:

kill -9 <PID>  

例子:

您可能会看到以下结果:

MacSys:bin krunal.$ lsof -i :8080

COMMAND   PID     USER   FD   TYPE     DEVICE  SIZE/OFF   NODE  NAME
java     21347   krunal  52u  IPv6      XXX      0t0      TCP  *:http-xxx (LISTEN)

杀死它:(kill -9 21347)

【讨论】:

【参考方案18】:

第一步: netstat -a -o -n 会弹出一个网络列表,搜索本地地址如 127.0.0.1:8080 并记下PID (eq 3624)

C:\>netstat -a -o -n

第二步: taskkill /F /PID 3624。运行此命令以终止该进程。

C:\>taskkill /F /PID 3624

链接到post

【讨论】:

请查看我的新答案,其中包含一个 PowerShell 脚本来自动化这两行。【参考方案19】:

在 Windows 上使用命令 来停止已经运行的 tomcat 实例并尝试在 eclipse 中再次运行它,它可能会起作用。

net stop tomcat7 

如果您只想在其他端口上运行,也可以更改服务器 XML 中的端口

【讨论】:

【参考方案20】:

当 Apache Tomcat 无法正常终止时,即使发送了关闭指令,问题也经常出现。在我的例子中,使用 Tomcat 8,这种情况经常发生。幸运的是,您可以使用 Windows PowerShell 和 netstat 命令创建一个简单的脚本来终止进程。

以下 PowerShell 脚本将解析来自 netstat 的输出以查找正在侦听 127.0.0.1:8005 的任何进程,提取其 PID,然后终止该进程:

netstat -a -o -n `
 | select -skip 4 `
 | % $a = $_ -split ' 3,'; New-Object 'PSObject' -Property @Original=$_;Fields=$a `
 | ? $_.Fields[1] -match '127\.0\.0\.1\:8005$' `
 | % Write-Host "Killing PID" $_.Fields[4] "..."; taskkill /F /PID $_.Fields[4] 

如果您的 server.xml 将 Tomcat 配置为使用不同的端口或 IP,请相应地编辑脚本第四行的正则表达式。

最后,我应该指出,Linux 上的情况更好,因为您可以指示 Tomcat 在启动时将其 PID 保存到文件中,并使用开关强制关闭,稍后 - 'nix 系统的关闭脚本已经具有杀死进程的能力,并且不需要使用netstat 进行侦探工作。

【讨论】:

【参考方案21】:

如何使用 PID 杀死 Windows 服务 -

    打开命令提示符并输入netstat -ano 查找正在使用的端口的PID,在这种情况下,它将是8080、8005、8009。假设这些端口的 PID 为 5760。 现在输入taskkill /f /pid 5760 它将关闭 PID,端口将可供使用。现在您可以通过 Windows 服务或 eclipse 本身正常启动 tomcat。

谢谢

kill a Windows service that's stuck on stopping or starting

【讨论】:

【参考方案22】:

如果上述努力都没有帮助,这里还有一个可以尝试的选项。 您可能正在使用共享驱动器中的 Eclipse(例如,H:)。如果是这样,请将其整个 Eclipse 目录移动/复制到 C: 并重试。

我的 Eclipse 无法打开 Tomcat 服务器的端口(出现上述错误),甚至无法连接到互联网。我还尝试了另一个未能打开端口的 Tomcat 插件(Sysdeo)。

这些是我尝试过的选项:

检查并杀死其他 Tomcat 实例

在命令提示符下,netstat -ano 并检查是否有其他进程正在使用冲突的端口。 找到 PID 并杀死它 再次尝试启动服务器。

在 Eclipse 中更改 Tomcat 端口

在 Eclipse Server 选项卡中,双击 Tomcat 实例。这将打开配置选项卡。 在端口下,更改端口号。 (例如,18080)。

杀死 java.exe 和 javaw

在任务管理器中,找到并杀死 java.exe 和 javaw(参见 https://***.com/a/25334782/4212710 和 https://***.com/a/26136890/4212710) 再次尝试启动服务器。

请参阅我关于 Eclipse 未连接到 Internet (https://***.com/a/37246087/4212710) 的其他答案。

【讨论】:

【参考方案23】:

释放已用于在 Eclipse 中运行 tomcat 服务器的端口的步骤

例如假设使用8080端口,我们需要腾出8080来运行tomcat

第 1 步:

C:\Users\用户名>netstat -o -n -a | findstr 0.0:8080

TCP 0.0.0.0:3000 0.0.0.0:0 监听 3116

现在,我们可以看到 8080 的 LISTENING 端口是 3116,

我们现在需要杀死 3116

第 2 步:-

C:\Users\username>taskkill /F /PID 3116

第 3 步: 转到 Eclipse 并启动 Server ,它将运行

【讨论】:

祝福你亲爱的先生。现在我相信上帝了。 哇哦! +1 年你的生活:)【参考方案24】:

对于 Windows 用户:

使用 CTRL+SHIFT+ESC 组合键直接进入任务管理器。

通过右键单击并选择“结束任务”来终止“java.exe”进程。

【讨论】:

【参考方案25】:

您的 Tomcat 可能已经在运行。这就是为什么你有一个错误。我以前也遇到过同样的问题。我很简单地解决了:

    重新启动计算机 打开 Eclipse 运行你的 Tomcat

就是这样。

【讨论】:

【参考方案26】:

在windows操作系统中右键单击任务栏-->启动任务管理器-->进程然后检查java.exe或javaw是否正在运行,如果它正在运行,然后单击它并结束进程然后重新启动您的汤姆猫服务器。

    有时 Skype 会占用 80 端口,在这种情况下更改 Skype 设置并将 81 用于 Skype 或更改 tomcat 配置。

【讨论】:

【参考方案27】:

如果上述问题发生在基于 Windows 7 或 10 的操作系统中,则该问题是因为 Tomcat 作为 Windows 服务运行而发生的。要停止 Tomcat 作为 Windows 服务运行,请打开 Windows 控制面板。找到服务“Apache Tomcat”并停止它。 另一种方法是使用cmd杀死8080端口上运行的进程。

以管理员身份打开 cmd 运行。

    C:\users\username>netstat -o -n -a|findstr 0.0:8080 TCP 0.0.0.0:8080 0.0.0.0:0 监听 2160。 上面的 2160 是在端口 8080 上运行的进程的进程 ID,并使用以下命令杀死该进程 C:\users\username>taskkill /F /PID 2160 进入 IDE 并启动 Server,它将运行

【讨论】:

【参考方案28】:

这可能是因为您没有正确停止您的 tomcat 服务。为此,打开您的任务管理器,您可以在其中看到javaw.exe 服务。首先停止该服务。现在重启你的tomcat,它就可以正常工作了。

【讨论】:

【参考方案29】:

我检查了所有答案,但 informing only to kill PID.

如果您拥有所有人共享的终端访问权限,这将无济于事,或者您可能无权杀死 PID

在这种情况下,你可以做的是:

Double click on server

Go to Overview and change ports in Ports 像这样:

【讨论】:

【参考方案30】:

不需要关闭您的 Eclipse IDE。您的 Tomcat 可能已经在运行。这就是为什么你有一个错误。

从命令终端打开tomcat目录>> bin >>(在我的情况下是tomcat9)

输入命令

./shutdown.sh

它会关闭你正在运行的 tomcat

【讨论】:

以上是关于Tomcat 服务器在 localhost 所需的几个端口(8005、8080、8009)已在使用中的主要内容,如果未能解决你的问题,请参考以下文章

j2ee - 有关本地主机上 Tomcat 服务器所需端口号的错误 [重复]

本地主机上的tomcat v7.0服务器所需的几个端口(8080,8009)已在使用[重复]

apache tomcat 8009 端口正在使用中

Tomcat 服务器错误 - 端口 8080 已在使用中

如何确定我的tomcat应用程序所需的Openshift Pod的资源限制?

在 tomcat 中运行的 Spring Boot,所需的请求部分“文件”不存在