Tomcat服务器错误 - 端口8080已被占用。

67

在Eclipse Mars EE中尝试执行Servlet程序时,我收到了以下错误:

'Starting Tomcat v8.0 Sever at localhost'出现问题。

Tomcat v8.0 Server在本地主机需要使用端口8080,但该端口已被占用。可能已经在另一个进程中运行,或者系统进程正在使用该端口。要启动此服务器,您将需要停止其他进程或更改端口号。

我应该如何停止这个进程?我假设必须停止Tomcat 7服务器。如果我的操作系统是Windows 8,我该如何操作?

错误屏幕截图:

error screen shot


2
如果您正在从Eclipse运行Tomcat,请检查服务器视图(在底部停靠栏中)是否正在运行。 - Luiggi Mendoza
以管理员身份运行cmd以获取上述答案。 - AryehSa
20个回答

129

对于Ubuntu/Linux系统

步骤1: 找到正在使用端口8080的进程ID

netstat -lnp | grep 8080
or
ps -aef | grep tomcat

步骤2:使用上述结果中的进程ID结束该进程

kill -9 process_id

对于Windows系统

步骤1:查找进程ID

netstat -ano | findstr 8080

步骤2:以管理员身份打开命令提示符并终止进程

taskkill /F /pid 1088

在我的情况下,端口8005已经被占用,因此我使用了以上相同的步骤。

输入图像描述


1
你如何找到进程ID? - Karen Goh
1
pid是在图片右侧显示的四位数字。 - redCuckoo
1
这个解决方案在我的Ubuntu 21.04上有效,进程ID显示在末尾,例如20322/java。我使用20322来终止进程。 - gdogra

57

我只需要更改端口号enter image description here

  1. 打开Eclipse

  2. 进入服务器面板

  3. 右键单击Tomcat Server,选择打开,将出现总览窗口。

  4. 打开Ports选项卡,您会得到以下信息:

    • Tomcat管理器端口

    • HTTP/1.1

    • AJP/1.3

  5. 我更改了HTTP/1.1的端口号(即为8081

  6. 您可能还需要更改Tomcat管理器端口(即为8006)和AJP/1.3的端口号(即为8010)。

  7. 在浏览器中访问您的应用程序:http://localhost:8081/...


1
右键点击哪里? - Philip Rego
只需在服务器面板上双击Tomcat服务器,它就会打开概览窗口。 - lunarzshine

29

对于MAC用户,请打开终端并执行以下操作。

lsof -i :8080 //returns the PID (process id) that runs on port 8080
kill 1234 //kill the process using PID (used dummy PID here)
lsof -i :8443
kill 4321

8080是HTTP端口,8443是HTTPS端口,默认情况下。


感谢这个方便的解决方案,可以在使用Tomcat和服务器未正确关闭时调试Eclipse服务器应用程序。 - Sainath S.R
+1 lsof对于Mac用户来说比ps -aef更好的解决方案,因为你可以得到头部信息并且能看到哪个是PID,哪个是父PID等。 - JavaTec

25

如果您想重新获取8080端口号,可以通过打开任务管理器和进程选项卡,右键单击java.exe进程并单击结束进程来实现,如附图所示。

screen shot


这会结束整个Eclipse应用程序,对吗?我只想终止使用8080端口的Tomcat实例。 - nijogeorgep
不,这不会结束你的Eclipse应用程序。 - bosari
这在Linux系统监视器中同样适用,只需搜索Java即可。有趣的是,我在eclipse中停止了服务器并关闭了eclipse,但TC Server仍在8080上运行,不确定出了什么问题。 - JesseBoyd

24
netstat -ano | findstr 8080
taskkill /pid 21424 /F

在命令提示符中执行上述命令,第一个命令将找到正在使用端口8080或您使用的任何其他端口的进程的pid。在第二个命令中,将21424的pid替换为您要结束的进程pid。


$ taskkill /pid 4108 /F 错误:无效的参数/选项 - 'C:/Program Files/Git/pid'。 输入 "TASKKILL /?" 以获取使用说明。 - Philip Rego
你是否提供了正确的端口PID? - Sanket Patel

8

由于可以轻松处理命令提示符,打开CMD并输入以下内容。

netstat -aon | find "8080"

如果一个进程使用了上面的端口,它应该返回如下输出。
TCP    xxx.xx.xx.xx:8080      xx.xx.xx.xxx:443      ESTABLISHED     2222

最后一列的值(2222)是指进程ID(PID)。

可以按照以下方式KILL它。

taskkill /F /PID 2222

现在,您可以启动您的服务器。


6

解决方案

您可以使用以下故障排除提示。

故障排除提示#1

  1. 退出Eclipse

  2. 打开Web浏览器并访问http://localhost:8080

  3. 如果您看到“Tomcat”网页,则表示Tomcat正在作为Windows服务运行。要停止Tomcat作为Windows服务运行,请打开Windows控制面板。找到“Apache Tomcat”服务并停止它。

  4. 如果您没有看到“Tomcat”网页,则停止显示的适当进程。

-- 故障排除提示#2 - GUI选项

释放已用于在Eclipse中运行Tomcat服务器的端口的步骤

  1. 在MS Windows上,选择开始>所有程序>附件>系统工具>资源监视器

  2. 展开网络选项卡

  3. 移动到“Listening Ports”部分

  4. 查找端口8080的条目

  5. 选择给定进程并删除/终止该进程

  6. 返回Eclipse并启动Tomcat服务器,现在应该启动。


故障排除提示#3 - 命令行选项

释放已用于在Eclipse中运行Tomcat服务器的端口的步骤

例如,假设使用8080端口,则需要使8080空闲以运行tomcat

步骤1:(打开CMD命令)

C:\Users\username>netstat -o -n -a | findstr 0.0:8080

TCP 0.0.0.0:3000 0.0.0.0:0 LISTENING 3116

现在,我们可以看到8080的LISTENING端口为3116,

我们现在需要杀死3116

步骤2:

C:\Users\username>taskkill /F /PID 3116

步骤3:返回Eclipse并启动Tomcat服务器,现在应该启动。

====

Mac/Linux 解决方案

步骤0:退出Eclipse

步骤1:打开终端窗口

步骤2:输入以下命令以查找进程ID

lsof -i :8080 这将给出运行在端口8080上的应用程序的输出

步骤3:输入以下命令以杀死进程

kill $(lsof -t -i :8080)

步骤 4:返回 Eclipse 并启动 Tomcat 服务器,现在它应该已经启动了。


5
你可以分两步解决这个问题:
第一步:打开命令提示符,输入netstat -a -o -f并按回车键 (上述命令将显示在您的计算机上运行的所有进程) https://istack.dev59.com/m66JN.webp 第二步:输入TASKILL /F /PID 4036 (其中F表示强制终止,PID表示父ID,4036表示8080的进程ID,此处我使用了一些随机数字) https://istack.dev59.com/Co5Tg.webp 有时,当您尝试终止进程时,它会抛出一个异常,告诉您访问被拒绝,如上面的屏幕截图所示,在这种情况下,您应该以管理员身份打开命令提示符 https://istack.dev59.com/JwZTv.webp 然后回到Eclipse清理项目,然后尝试运行项目。

4

以管理员身份打开CMD或Powershell,然后运行...

netstat -ab

输出应该能够指出哪个进程占用了端口8080。条目可能是127.0.0.1:8080,您可能仍然在端口8080上运行Tomcat的实例。
您可以使用PowerShell中的Stop-Process或CMD中的taskKill停止该进程,并应该能够在那时执行该程序。

4
您已有另一个Tomcat实例在运行。您可以通过在Web浏览器中访问http://localhost:8080并检查是否获得了Tomcat默认主页或特定于Tomcat的404错误页面来确认此情况。这两种情况都是Tomcat正常运行的有效证据;如果没有,那么您将收到特定于浏览器的HTTP连接超时错误消息。
您需要关闭它。进入Tomcat安装文件夹的/bin子文件夹并执行shutdown.bat(Windows)或shutdown.sh(Unix)脚本即可。
如需更多帮助,请查看此答案

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接