当我试图在Eclipse中的Tomcat上运行一个简单的JSP程序时,我得到了以下错误。
Tomcat v6.0服务器在本地主机上所需的几个端口(8005、8080、8009)已经被使用。服务器可能已经在另一个进程中运行,或者某个系统进程正在使用该端口。要启动此服务器,您需要停止其他进程或更改端口号。
这是如何引起的,我该如何解决它?
当我试图在Eclipse中的Tomcat上运行一个简单的JSP程序时,我得到了以下错误。
Tomcat v6.0服务器在本地主机上所需的几个端口(8005、8080、8009)已经被使用。服务器可能已经在另一个进程中运行,或者某个系统进程正在使用该端口。要启动此服务器,您需要停止其他进程或更改端口号。
这是如何引起的,我该如何解决它?
您已经运行了另一个Tomcat实例。您可以通过在web浏览器中访问http://localhost:8080来确认这一点,并检查是否得到Tomcat默认主页或特定于Tomcat的404错误页面。两者都是Tomcat运行良好的有效证据;如果没有,那么您将得到一个特定于浏览器的HTTP连接超时错误消息。
你需要关掉它。进入Tomcat安装文件夹的“/bin”子文件夹,执行“shutdown.bat”(Windows)或“shutdown.sh”(Unix)脚本。如果无效,请关闭Eclipse,然后打开任务管理器并杀死所有java和/或javaw进程。
或者,如果您出于某种原因将其实际安装为Windows服务(即用于生产,在开发时没有帮助),请打开服务管理器(Start > Run > 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+S),然后再次启动服务器。
如果你在windows上运行,在命令行提示符中试试这个:
netstat -ano
这将显示所有正在使用的端口以及正在使用该端口的进程的进程id PID #。 然后按Ctrl+Alt+Del并打开任务管理器,查看哪个进程。
然后,您可以选择关闭/停止它,或者配置您的服务器使用其他端口。 要检查新选择的端口(比如8010)是否可用,请执行以下操作:
netstat -ano | grep 8010
如果它没有返回任何行,那么就没问题。
要更改端口,请转到Server视图,打开Server .xml并在那里更改端口。 我的记录是这样的:
Connector port="8010" protocol="AJP/1.3" redirectPort="8443"
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可能正在后台运行,所以首先停止该服务器。
解决方案是:
打开“控制台”视图(窗口->显示视图->控制台) 然后停止tomcat服务器。 然后打开“服务器”视图并启动服务器,它将工作。
谢谢!
在窗户的情况下,我经历了一个新的东西… 从/bin文件夹停止tomcat将不会立即释放端口8080。端口释放大约需要5 ~ 10分钟。10分钟后再次如果我试图运行我的项目 运行->在服务器上运行。它允许运行。
我不确定我的理解是否正确!
对我来说更简单的解决方法是通过“服务器”选项卡从tomcat中删除我当前部署的webapps。一旦我把它们去掉,问题就解决了。只需重新部署您的项目运行>在服务器上运行。
Tomcat vX需要的几个端口(8005,8080,8009)。本地主机上的X服务器已经在使用
检查Tomcat的其他实例是否已经在运行,或者其他进程是否正在使用您可以使用的端口:
Netstat -b -a在windows命令提示符中。这将列出正在使用的端口,并为您提供使用每个端口的可执行文件。您需要在管理组中才能执行此操作。
你可能会得到这样的东西:
TCP 192.168.0.1:8009 192.168.0.1:0 LISTENING 196 [Tomcat7.exe] 192.168.0.1:0监听196 [Tomcat7.exe] TCP 192.168.0.1:8005 192.168.0.1:0 LISTENING 196 [Tomcat7.exe]
打开任务管理器Ctrl+Shift+Esc,关闭Tomcat7.exe或使用这些端口的任何其他进程。
有时,如果在尝试@BalusC建议的shutdown.bat后端口仍未释放,您可以杀死javaw进程。执行以下步骤:
点击开始菜单,打开“Windows powershell” 打开前单击右键,选择“以管理员身份运行” 输入命令ps,你可能会看到如下图片: 查看进程“javaw”的进程号。进程号是列中最右边的数字,例如我在javaw的图像进程号中高亮显示。 输入命令kill。Javaw被杀死,现在您必须能够运行程序。
解决问题的简单方法:
服务器可能已经在另一个进程中运行,或者某个系统进程正在使用该端口。为了关闭该端口,请执行以下操作:
1)从以下链接下载TCPView(只有285kb)。
http://technet.microsoft.com/en-in/sysinternals/bb897437.aspx
2)解压文件夹,启动TCPView应用程序。
3)右键单击java.exe(因为8009,8005端口通常被java进程使用),并选择结束进程选项。
这将很容易地停止另一个进程。
注意:运行TOMCATPATH/bin/shutdown.bat可能不会在Tomcat包含恶魔或非托管时关闭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
Step2: taskkill /F /PID 3624。运行此命令终止该进程。
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 -
打开命令提示符并输入netstat -ano 找到正在使用的端口的PID,在本例中为8080,8005,8009。假设这些端口的PID为5760。 现在输入taskkill /f /pid 5760 它将关闭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
在任务管理器中,找到并杀死java.exe和javaw(参见https://stackoverflow.com/a/25334782/4212710和https://stackoverflow.com/a/26136890/4212710) 尝试重新启动服务器。
请参阅我对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
步骤3: 转到Eclipse并启动Server,它将运行
您的Tomcat可能已经在运行。这就是为什么会出现错误。我以前也遇到过同样的问题。我的答案很简单:
重新启动计算机 打开Eclipse 运行Tomcat
这是所有。
在windows操作系统中,右键单击任务栏——>启动任务管理器——>进程,然后检查java.exe或javaw是否正在运行,如果正在运行,然后单击它并结束进程,然后重新启动你的tom cat服务器。
有时skype将占用端口80,在这种情况下,更改skype设置并将skype设置为81或更改tomcat配置。
如果在基于Windows 7或Windows 10的操作系统上出现上述问题,则是因为Tomcat作为Windows Service运行。要停止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并启动服务器,它将运行
这可能是因为您没有正确地停止tomcat服务。为此,打开你的任务管理器,你可以看到一个javaw.exe服务。首先停止服务。现在重新启动tomcat,它可以正常工作。
我检查了所有的答案,但只通知杀死PID。
在这种情况下,如果你有终端访问共享的所有,这将没有帮助,或者可能你没有权限杀死PID。
在这种情况下,你可以做的是:
双击服务器
进入“概述”,在“端口”中修改端口,如下所示:
不需要关闭eclipse IDE。您的Tomcat可能已经在运行。这就是为什么会出现错误。
从命令终端打开tomcat目录>> bin >>(以tomcat9为例)
输入命令
。/ shutdown.sh
它将关闭正在运行的tomcat
在我的例子中,它给了我一个错误:Tomcat v8.0服务器在localhost上所需的端口8005已经在使用中
我在apache-tomcat-8.0.39\conf\server.xml中更改了8005端口,但更改没有得到反映。然后我从eclipse做了这些改变。通过双击服务器并将端口从8005修改为8006,它就可以工作了。
在放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,如下所示:
只需按下停止,如下图所示:
经过多次试验和建议的解决方案后,它终于与我一起工作了。
此致敬意 凯雷洛斯·米哈伊尔
以上都不适合我。
我找到的是点击Details按钮。
然后在Eclipse中使用Tomcat运行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的进程,并在终端中输入以下命令将其终止
kill -STOP <PID>
其中PID是Activity Monitor中显示的Java进程的进程号。重复执行几次,然后关闭并重新打开Activity Monitor以检查Java是否正在运行。
第二步:修改端口:
在Eclipse中的服务器上右键单击“Open”。将端口号从8080修改为8081或更大的值。
这应该会启动您的服务器。