【问题标题】:Several ports (8005, 8080, 8009) required by Tomcat Server at localhost are already in useTomcat 服务器在 localhost 所需的几个端口(8005、8080、8009)已在使用中
【发布时间】: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运行命令

标签: java eclipse tomcat


【解决方案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 可能在后台运行,因此请先停止该服务器..按照以下详细信息进行操作。

        解决办法是:

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

        谢谢!

        【讨论】:

        • 这对我有用。我只试过: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 进程。执行以下步骤:

              1. 点击开始菜单并打开“Windows powershell”
              2. 打开前右击选择“以管理员身份运行”
              3. 输入命令 ps。您可能会看到如下图像:

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

              5. 输入命令 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 服务 -

                      1. 打开命令提示符并输入netstat -ano
                      2. 查找正在使用的端口的PID,在这种情况下,它将是8080、8005、8009。假设这些端口的 PID 为 5760。
                      3. 现在输入taskkill /f /pid 5760
                      4. 它将关闭 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

                        请参阅我关于 Eclipse 未连接到 Internet (https://stackoverflow.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 可能已经在运行。这就是为什么你有一个错误。我以前也遇到过同样的问题。我很简单地解决了:

                            1. 重新启动计算机
                            2. 打开 Eclipse
                            3. 运行你的 Tomcat

                            就是这样。

                            【讨论】:

                              【解决方案26】:

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

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

                              【讨论】:

                                【解决方案27】:

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

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

                                1. C:\users\username>netstat -o -n -a|findstr 0.0:8080
                                2. TCP 0.0.0.0:8080 0.0.0.0:0 监听 2160。
                                3. 上面的 2160 是在端口 8080 上运行的进程的进程 ID,并使用以下命令杀死该进程
                                  C:\users\username>taskkill /F /PID 2160
                                4. 进入 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

                                      【讨论】:

                                        猜你喜欢
                                        • 1970-01-01
                                        • 2023-03-19
                                        • 2017-04-08
                                        • 2016-03-19
                                        • 2011-10-05
                                        • 2012-01-22
                                        • 2012-01-20
                                        • 1970-01-01
                                        相关资源
                                        最近更新 更多