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

当我试图在Eclipse中的Tomcat上运行一个简单的JSP程序时,我得到了以下错误。

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

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

782126 次浏览

您已经运行了另一个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文档。

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

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

我是这样解决这个问题的:

  • 根据提示进入tomcat的bin目录
  • 发射startup.bat
  • 发射shutdown.bat
  • 使用Eclipse启动tomcat

参考以下博客“如何在不重启计算机的情况下杀死tomcat”

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

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

如果您在Eclipse中的Java EE前景中,并试图以调试模式在Eclipse中启动Tomcat服务器,那么您将得到这样的错误。您必须在Eclipse中切换到预调试。我就这样解决了我的问题。

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

如果你在windows上运行,在命令行提示符中试试这个:

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

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

netstat -ano | grep 8010

如果它没有返回任何行,那么就没问题。

要更改端口,请进入Server视图,打开server.xml并在那里更改端口。 我的有这个条目:

Connector port="8010" protocol="AJP/1.3" redirectPort="8443"
在Eclipse上对项目“Servers”下的Tomcat配置文件夹进行原始删除。

.我试了最后的希望,它成功了
kill $(ps -aef | grep java | grep apache | awk '{print $2}')
  • 无需重新启动Eclipse
  • 如果您得到上述错误,只需在终端中输入这一行
  • 再次在Eclipse中启动tomcat。
  • 仅适用于Linux系统(Ubuntu ..等)

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

如果Eclipse说

Tomcat v6.0服务器在本地主机上所需的几个端口(8005、8080、8009)已经被使用

出现此错误是因为tomcat可能正在后台运行,所以首先停止该服务器。

解决方案是:

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

谢谢!

在窗户的情况下,我经历了一个新的东西… 从/bin文件夹停止tomcat将不会立即释放端口8080。端口释放大约需要5 ~ 10分钟。10分钟后再次如果我试图运行我的项目 运行->在服务器上运行。它允许运行。< / p >

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

对我来说更简单的解决方法是通过“服务器”选项卡从tomcat中删除我当前部署的webapps。一旦我把它们去掉,问题就解决了。只需重新部署您的项目运行>在服务器上运行。

Tomcat vX需要的几个端口(8005,8080,8009)。本地主机上的X服务器已经在使用

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

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

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

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+转变+Esc,并杀死Tomcat7.exe或使用这些端口的任何其他进程。

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

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

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

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

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

解决问题的简单方法:

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

1)从下面的链接下载TCPView(只有285 kb)

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

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

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

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

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

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

从终端找到运行在该端口上的进程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)

步骤1: Netstat -a -o -n,它会显示一个网络列表,搜索本地地址,如127.0.0.1:8080,并注意PID (eq 3624)

C:\>netstat -a -o -n

__abc0 __abc1。运行此命令终止该进程。

C:\>taskkill /F /PID 3624

链接到帖子

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

net stop tomcat7

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

当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进行探测工作。

如何杀死一个windows服务使用PID -

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

谢谢

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

如果以上方法都不起作用,这里还有一个选择。您可能正在从共享驱动器(例如H:)使用Eclipse。。如果是,将其移动/复制到整个Eclipse目录C:,然后再试一次。

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

以下是我尝试过的选择:

检查并杀死其他Tomcat实例

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

在Eclipse中更改Tomcat端口

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

关闭java.exe和javaw

查看我对Eclipse未连接到Internet的其他回答(https://stackoverflow.com/a/37246087/4212710)。

步骤释放已用于在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

< p >步骤3: 转到Eclipse并启动Server,它将运行

windows用户:

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

通过右键单击并选择“End Task”来终止“java.exe”进程。

您的Tomcat可能已经在运行。这就是为什么会出现错误。我以前也遇到过同样的问题。我的答案很简单:

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

这是所有。

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

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

如果上述问题发生在基于Windows 7或Windows 10的操作系统上,则是因为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并启动服务器,它将运行

这可能是因为您没有正确地停止tomcat服务。要做到这一点,打开任务管理器在那里你可以看到一个javaw.exe服务。首先停止服务。现在重新启动tomcat,它可以正常工作。

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

如果您拥有所有人共享的终端访问权限将没有帮助或也许你没有权限杀死PID

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

Double click on server

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

enter image description here

不需要关闭eclipse IDE。您的Tomcat可能已经在运行。这就是为什么会出现错误。

从命令终端打开tomcat目录>> bin >>(以tomcat9为例)

输入命令

。/ shutdown.sh

它将关闭正在运行的tomcat

enter image description here

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

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

在放8006之前,我在windows shell中检查这个端口是否可用。执行如下命令:

netstat -a -o -n | findstr 8006

最简单的解决方案

单行删除多个端口命令:

kill $(lsof -t -i:8005,8080,8009)

8005、8080和8009为需要释放的端口。

或者,你可以在linux中尝试sudo kill sudo lsof -t -i:8005

我也面临同样的问题,在搜索答案后,如下图所示: 1. 打开Monitor Tomcat,如下所示: enter image description here < / p >
  1. 只需按下停止,如下图所示:

enter image description here

经过多次试验和建议的解决方案后,它终于与我一起工作了。

< p >最诚挚的问候, Kerelos米哈伊尔< / p >

以上都不适合我。

我发现点击细节按钮。 enter image description here < / p >

然后跟随使用Tomcat在Eclipse中运行web服务时出现多个具有相同路径的上下文错误

删除了重复的行,然后我得到了另一个错误。

The server cannot be started because one or more of the ports are invalid. Open the server editor and correct the invalid ports.

不能在Eclipse中启动tomcatv9.0

这样就有用了。

Macbook的解决方案:

步骤1:停止服务器运行Java:

打开活动监视器到应用程序>公用事业比;活动监视器。或简单按CMD +空格键,并开始键入活动监视器。 寻找运行Java的进程,并在Terminal

中输入以下命令将其终止
kill -STOP <PID>

其中PID是Activity Monitor中显示的Java进程的进程号。重复执行几次,然后关闭并重新打开Activity Monitor以检查Java是否正在运行。

步骤2:修改端口:

在Eclipse中的服务器上右键单击“Open”。将端口号从8080修改为8081或更大的值。

这应该会启动您的服务器。

在windows中打开任务管理器(Ctrl+Alt+Delete),进入服务选项卡,然后右键单击tomcat,选择停止,然后在eclipse中启动