关于java:Tomcat Server在localhost上需要的几个端口(8005,8080,8009)已经在使用中

Several ports (8005, 8080, 8009) required by Tomcat Server at localhost are already in use

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

Several ports (8005, 8080, 8009) required by Tomcat v6.0 Server at localhost are already in use. The server may already be running in another process, or a system process may be using the port. To start this server you will need to stop the other process or change the port number(s).

这是怎么造成的,我该如何解决?


您已经运行了另一个Tomcat实例。您可以通过转到Web浏览器中的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文档。


1
kill $(ps -aef | grep java | grep apache | awk '{print $2}')
  • 无需重启Eclipse
  • 如果您收到上述错误,只需在终端输入此行即可
  • 再次在Eclipse中启动tomcat。
  • 仅适用于基于Linux的系统(Ubuntu ..etc)


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

1
netstat -ano

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

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

1
netstat -ano | grep 8010

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

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

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


如果你在mac环境中,这就是我所做的。

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

1
lsof -i :8080

杀了它:

1
kill -9 <PID>


自由端口的步骤已经用于在Eclipse中运行tomcat服务器

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

步骤1:

C: Users username> 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,它将运行


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


如果Eclipse说

Several ports (8005, 8080, 8009) required by Tomcat v6.0 Server at localhost are already in use

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

解决方案是:

  • 打开"控制台"视图(window-> show view-> Console)
  • 然后停止tomcat服务器。
  • 然后打开"服务器"视图并启动它将工作的服务器。
  • 谢谢!


    我没有其他Tomcat实例运行广告,没有其他进程使用"Tomcat端口"(在我的情况下,8088端口)。
    Eclipse在启动Tomcat时发送相同的消息:

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

    我用这种方式解决了这个问题:

    • 通过提示转到tomcat的bin
    • 启动startup.bat
    • 启动shutdown.bat
    • 通过Eclipse启动tomcat


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


    步骤1:netstat -a -o -n它将显示网络列表,搜索本地地址,如127.0.0.1:8080并记下PID(eq 3624)

    1
    C:\>netstat -a -o -n

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

    1
    C:\>taskkill /F /PID 3624

    链接到帖子


    解决问题的简便方法:

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

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

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

    2)提取文件夹并启动TCPView应用程序。

    3)右键单击java.exe(因为java进程通常使用8009,8005端口)并选择End Process选项。

    这会轻易阻止另一个过程..

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


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

    1
    net stop tomcat7

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


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

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

    这些是我试过的选项:

    检查并杀死其他Tomcat实例

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

    在Eclipse中更改Tomcat端口

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

    杀死java.exe和javaw

    • 在任务管理器中,查找并删除java.exe和javaw(请参阅https://stackoverflow.com/a/25334782/4212710和https://stackoverflow.com/a/26136890/4212710)
    • 尝试再次启动服务器。

    请参阅我对Eclipse未连接到Internet的其他答案(https://stackoverflow.com/a/372??46087/4212710)。


    对于Windows用户:

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

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


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


    有时如果在尝试shutdown.bat @BalusC建议之后没有释放端口,你可以杀死javaw进程。请执行以下步骤:

  • 单击"开始"菜单,然后打开"Windows powershell"
  • 打开前右键单击并选择"以管理员身份运行"
  • 输入命令ps。您可能会看到如下图像:
    Powershell showing current proesses running

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

  • 输入命令kill。 javaw被杀了,现在你必须能够运行该程序。


  • 如果在基于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,它将运行

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

    如果你有所有共享的终端访问权限,它将没有帮助,或者你可能没有权限杀死PID。

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

    Double click on server

    Go to Overview and change ports in Ports是这样的:

    enter image description here


    对我有用的更简单的修复是通过"服务器"选项卡从tomcat删除我当前部署的webapps。一旦我删除它们,问题就会消失。只需通过运行方式>运行在服务器上重新部署项目。


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

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

    1
    2
    3
    4
    5
    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来终止进程和侦听工作的能力。


    可能是因为您没有正确停止tomcat服务。为此,在那里打开您的任务管理器,您可以看到javaw.exe服务。先停止那项服务。现在重新启动你的tomcat它工作正常。


    就我而言,它给了我错误:tomcat v8.0 Server在localhost上所需的端口8005已经在使用中

    我在apache-tomcat-8.0.39 conf server.xml中更改了8005端口,但没有反映出更改。然后我从eclipse做了这些改变。通过双击服务器并将端口从8005修改为8006,它可以正常工作。
    enter image description here

    在放入8006之前,如果此端口可用,我检查了Windows shell。执行以下命令:

    1
    netstat -a -o -n | findstr 8006

    请参阅以下博客"如何杀死tomcat而无需重新启动计算机"

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

    希望这将有助于未来的人。


    不需要关闭你的eclipse IDE.Your Tomcat可能已经运行了。这就是你有错误的原因。

    从命令终端打开tomcat目录>> bin >>(在我的例子中是tomcat9)

    输入命令

    ./shutdown.sh

    它会关闭你正在运行的tomcat

    enter image description here


    在Eclipse上,在项目"Servers"下对Tomcat配置文件夹进行原始删除。
    我试着把它作为最后的希望而且有效。


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

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


    Several ports (8005, 8080, 8009) required by Tomcat vX.X Server at localhost are already in use

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

    netstat -b -a in command prompt for windows. This lists the ports in use and gives you the executable that's using each one. You need to be in the admin group to do this.

    你可能得到这样的东西:

    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或任何其他进程。


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


    你的Tomcat可能已经运行了。这就是你有错误的原因。我之前遇到过同样的问题。我很简单地解决了它:

  • 重启你的电脑
  • 打开Eclipse
  • 运行你的Tomcat
  • 就这样。


    最简单的解决方案

    用于终止多个端口的单行命令:

    1
    kill $(lsof -t -i:8005,8080,8009) // 8005, 8080 and 8009 are the ports to be freed

    如何使用PID终止Windows服务 -

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

    杀死一个停止或启动的Windows服务


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

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