转载

tomcat 协议处理程序初始化失败

一、大致解决步骤

一般这种情况都是tomcat服务器的端口号被占用了,我们可以通过以下步骤解决问题:

1、检查Tomcat是否已经在运行。如果已经在运行,您需要停止已有的Tomcat实例,释放占用的端口号。可以通过命令行或者其他工具查看到Tomcat进程,关闭对应的进程即可。

2、如果端口号未被占用,可以尝试更改Tomcat服务器的端口号,防止和其他程序冲突。

在 Tomcat 目录下找到 conf文件夹下的server.xml 文件,找到以下内容:

 <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

将其中的 "port" 值改为其他未被占用的端口号即可。

=========================================================================

二、如何确定8080端口是否有程序占用

要检查一个端口是否已经被另一个应用程序使用,可以使用以下命令:

在 Windows 系统上:

netstat -ano | findstr :PortNumber

其中,PortNumber 是需要检查的端口号。例如,要检查 8080 端口是否被占用,可以执行以下命令:

netstat -ano | findstr :8080

如果该端口已经被占用,则会显示一行记录,其中包含了占用该端口的应用程序的 PID(进程 ID)。例如:

TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       1234

其中的 1234 就是占用该端口的应用程序的进程 ID。此时,你可以通过任务管理器或者其他工具来查找并关闭该应用程序,或者选择一个空闲的端口号来替换该端口号。

在 Linux 或者 macOS 系统上:

sudo netstat -tlnp | grep :PortNumber

其中,PortNumber 是需要检查的端口号。例如,要检查 8080 端口是否被占用,可以执行以下命令:

sudo netstat -tlnp | grep :8080

如果该端口已经被占用,则会显示一行记录,其中包含了占用该端口的应用程序的 PID(进程 ID)。例如:

tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      1234/java

其中的 1234 就是占用该端口的应用程序的进程 ID。此时,你可以通过 kill 命令或者其他工具来终止该应用程序,或者选择一个空闲的端口号来替换该端口号。

三、如何结束占用端口的应用程序

(注释:以下图片是win11下的图)

  1. 在 Windows 系统上,可以通过右键单击任务栏,然后选择“任务管理器”打开任务管理器【也可 Ctrl + Shift + Esc 快捷打开】。在 Linux 或者 macOS 系统上,则可以使用 top 或者 htop 等进程管理工具。

  2. 在任务管理器中,切换到“进程”选项卡,并按照 PID 列进行排序。如果您在之前已经使用 netstat 命令检查了占用该端口的进程 ID,那么可以直接查找相应的 PID。否则,您需要找到占用端口的进程名或者命令行参数,从而找到占用该端口的进程。

  3. 在此框内输入你在终端查到的占用端口的程序的PID。

  4. TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       1234
    
  5. 以上图为例的的话就是输入1234即可。

  6. 找到占用端口的进程之后,可以尝试使用任务管理器中的“结束任务”功能来终止该进程。但是需要注意的是,有些进程可能无法通过此方式终止,如果遇到这种情况,可以考虑使用 kill 命令或者其他工具来终止该进程。

  7. 如果您无法终止该进程,或者希望保留该进程但是需要更改端口号,可以选择一个空闲的端口号来替换该端口号。通常情况下,您需要修改应用程序的配置文件,将端口号改为新的值。在 Tomcat 中,配置文件通常位于 conf/server.xml 文件中,在该文件中找到 Connector 元素,修改其中的 port 属性即可。


正文到此结束