Tomcat服务器在本地主机上需要的几个端口(8005、8080、8009)已在使用中


258

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

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

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


我有一个类似的问题,原来是Windows防火墙。
詹姆斯·奥拉维克

可能有些不死进程正在使您的雄猫活着。通过找到其ID并终止它或通过重新启动计算机来终止该进程。
FelipeLeão19年

您可以使用这些命令来停止已经从命令控制台运行的tomcat服务。netstat -ano | findStr 8080查找正在运行的服务,然后找到进程ID并复制pid,然后再次运行命令taskkill /F /PID pid_number
-Mdhar9e,

Answers:


473

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

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

或者,如果出于某种原因将其实际安装为Windows服务(这是出于生产目的,并且在您进行开发时无济于事),请打开服务管理器(“ 开始”>“运行”>“ services.msc”),然后停止Tomcat服务。如有必要,请完全卸载Windows服务。对于开发而言,仅ZIP文件就足够了。

或者,如果您的实际意图是同时运行两个Tomcat实例,则必须将第二个实例配置为侦听不同的端口。有关更多详细信息,请查阅Tomcat文档。


1
完美,这一直困扰着我。我sh shutdown.sh在/ bin目录中的终端中执行了它。
丹尼·英格兰

2
你好BalusC,我喜欢你!shutdown.bat我的bin文件夹中没有。Tomcat是作为服务而非zip安装的。在服务中停止tomcat服务可解决此问题。谢谢。辰qui
Erran Morad 2014年

1
@Borat:不客气。请记住,您最好卸载该服务并获取zip。
BalusC 2014年

6
感谢我,“杀死所有Java和/或Javaw进程”。
Thariq Nugrohotomo

3
打开system monitoror task manager并杀死正在使用about 400 MB或更多的java进程也RAM将解决该问题。它在不知不觉中保留了该过程。
viper

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

6
这是更好kill $(ps -aef | grep java | grep apache | awk '{print $2}')
firesofmay

这对我不起作用(薄荷17.1)。它只是给我kill命令的帮助。
Deleet

这对我有用。但是我想知道是否有2个实例在运行,并且我必须使用此方法强制停止一个实例,如何确定要关闭的实例。感谢
Gautam

29

如果您在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脚本,可以自动执行此操作,而无需您打开“任务管理器”。
Xharlie

1
findstr对于那些没有grep的人。
eckes

25

如果您在Mac环境中,就是我所做的。

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

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


20

释放已在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,它将运行


14

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


这对我有用,而其他解决方案则没有。我正在使用Mint 17.1。我必须通过Eclipse和apt-get来安装tomcat,因为我找不到apt-get用来安装它的文件夹。所以大概就是为什么我有两个。我仍然无法使用kill命令关闭第一个。
Deleet

12

如果Eclipse说

Tomcat v6.0 Server在本地主机所需的几个端口(8005、8080、8009)已在使用中

出现此错误的原因是tomcat可能在后台运行,因此请先停止该服务器。.请遵循以下详细信息。

解决方法是:

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

谢谢!


这对我有用。我只试过:sudo service tomcat stop
Emiliano Sangoi

10

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

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

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

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

1
我的问题是8005和8009端口很忙,但是8080端口是空闲的,那时没有tomcat安装正在运行。您的解决方案帮助我解决了此问题,谢谢。
贝纳斯

7

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


6

步骤1: netstat -a -o -n它将弹出一个网络列表,搜索127.0.0.1:8080之类的本地地址并记下PID(eq 3624)

C:\>netstat -a -o -n

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

C:\>taskkill /F /PID 3624

链接到帖子


请查看我的新答案,其中包括一个PowerShell脚本来自动化这两行。
Xharlie

5

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

net stop tomcat7 

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


4

解决问题的简单方法:

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

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

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

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

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

这将很容易地停止另一个过程。

:如果运行TOMCATPATH / bin / shutdown.bat包含某些恶魔或非托管线程,它可能不会关闭Tomcat。在这种情况下,TCPView可以正常工作而不会出现任何问题。


2

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


2

有时,即使在尝试shutdown.bat之后仍未释放端口,@ BalusC建议使用什么,您可以杀死Javaw进程。请执行以下步骤:

  1. 单击开始菜单,然后打开“ Windows Powershell”
  2. 打开前右键单击并选择“以管理员身份运行”
  3. 输入命令ps。您可能会看到如下图像: Powershell显示当前进程正在运行

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

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


1
请查看我的新答案,其中包括一个PowerShell脚本来自动执行此操作。
Xharlie

2

如果以上方法均无济于事,可以尝试以下一种选择。您可能正在从共享驱动器(例如H :)使用Eclipse。如果是这样,请将其整个Eclipse目录移动/复制到C :,然后重试。

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

这些是我尝试的选项:

检查并杀死其他Tomcat实例

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

在Eclipse中更改Tomcat端口

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

杀死java.exe和javaw

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


2

对于Windows用户:

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

右键单击并选择“结束任务”,杀死“ java.exe”进程。


2

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

如果您拥有所有人共享的终端访问权限,将无济于事,或者您没有终止PID的权限

在这种情况下,您可以执行以下操作:

Double click on server

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

在此处输入图片说明


1

对我来说,更简单的解决方法是通过“服务器”选项卡从tomcat删除当前部署的Web应用程序。一旦删除它们,问题就消失了。只需通过运行方式>在服务器上运行来重新部署项目。


1

当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.xmlTomcat配置为使用其他端口或IP,请相应地在脚本的第四行上编辑正则表达式。

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


1

如果在基于Windows 7或10的OS中发生上述问题,则发生此问题,因为Tomcat作为Windows Service运行。要停止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,它将运行

1

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


1

以我为例,它给了我错误:本地主机上的Tomcat v8.0服务器所需的端口8005已在使用中

我在apache-tomcat-8.0.39 \ conf \ server.xml中更改了8005端口,但更改未得到反映。然后我从Eclipse进行了这些更改。通过双击服务器并将端口从8005修改为8006,它可以工作。 在此处输入图片说明

在放入8006之前,我在Windows Shell中检查了此端口是否可用。通过执行以下命令:

netstat -a -o -n | findstr 8006

1

我遇到了同样的问题,并且在搜索了如下所示的答案之后:1.打开Monitor Tomcat,如下所示: 在此处输入图片说明

  1. 只需按下停止,如下图所示:

在此处输入图片说明

最终,经过许多尝试和建议的解决方案,它与我合作。

最好的问候,Kerelos Mikhail


0

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


0

如果是Windows,我会遇到一些新问题...从/ bin文件夹中停止tomcat将不会立即释放端口8080。释放端口大约需要5-10分钟。再过10分钟后,如果我尝试运行我的项目,则运行->在服务器上运行..它允许运行。

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



0

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


0

如何使用PID终止Windows服务-

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

谢谢

杀死停留在停止或启动的Windows服务


0

Tomcat vX.X Server在本地主机所需的几个端口(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脚本来自动执行此操作。
Xharlie

0

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

  1. 重启你的电脑
  2. 打开Eclipse
  3. 运行你的Tomcat

就这样。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.