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 monitor
或task 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)已在使用[重复]