繁体   English   中英

Spring Boot application in eclipse,Tomcat connector配置为监听端口XXXX启动失败

[英]Spring Boot application in eclipse, the Tomcat connector configured to listen on port XXXX failed to start

我正在使用 Spring 框架开发 REST API。

首先,由于同样的问题,我无法运行我的应用程序。 我电脑的8080端口忙。 然后我发现解决这个问题的另一种方法是在src/main/resources文件夹下创建一个application.properties文件。 这就是我所做的,并将服务器设置为侦听端口 8090。这只是第一次成功,现在每当我第二次尝试运行该应用程序时,我都会遇到同样的异常。

Description:

The Tomcat connector configured to listen on port 8090 failed to start. The port may already be in use or the connector may be misconfigured.

Action:

Verify the connector's configuration, identify and stop any process that's listening on port 8090, or configure this application to listen on another port.

据我所知,该框架使用 apache tomcat 的嵌入式实例来部署每个应用程序。

我的猜测是,我第二次尝试运行应用程序时服务器没有重新启动,这就是为什么 output 说“端口可能已被使用或连接器可能配置错误”

因此,一个更具体的问题是,如何手动或以编程方式管理 apache tomcat 的嵌入式实例?

我还在application.properties文件中修改了端口两次。 它工作正常,但又是第一次。 正如您可以想象的那样,我无法在每次执行应用程序时都做同样的事情。

  1. 查找端口的进程 ID (PID)(例如: 8080

    在 Windows 上:

     netstat -ao | find "8080"

    windows以外的其他平台:

     lsof -i:8080
  2. 杀死您找到的进程 ID(例如:20712)

    在 Windows 上:

     Taskkill /PID 20712 /F

    windows以外的其他平台:

     kill -9 20712 or kill 20712

在控制台上,查看对话框的最右上角,您应该会看到一个有点像蜂鸣器的红色按钮。 要正确停止刚刚运行的 spring boot 应用程序,请继续点击这个特定的“红色”按钮,您的问题就解决了。 希望这可以帮助!

解决此错误的另一种简单方法是右键单击控制台,然后单击“终止/断开所有连接”。 之后运行应用程序它应该可以正常工作。

问题:这是因为您没有停止应用程序,或者应用程序已经以某种方式在同一端口上以某种方式运行。

解决方案,在再次启动之前,需要杀死较早的应用程序并释放端口。

根据您的平台,您可以运行以下命令来停止应用程序,

在窗户上

netstat -anp | 找到“您的应用程序端口号”` --> 找到 PID

taskkill /F /PID

在 Linux 上,

netstat -ntpl | grep“您的应用程序端口号”

kill pid // 您将从上一个命令中获得的 pid

在 Mac 操作系统上

lsof -n -iTCP:"端口号"

kill pid //pid 您将从上一个命令中获得

找到进程并终止它。 在 Windows 上执行 Control+Alt+Delete,然后在 Processes 选项卡下找到“Java(TM) Platform SE Binary”进程。 例如: 在此处输入图片说明

在 Ubuntu 上,您可以使用“ps aux | grep java”来查找进程并使用“kill -9 PID_NUMBER”来终止进程。

或者

如果您使用的是 Spring Boot 应用程序,请转到 application.properties 并添加以下内容:

server.port = 8081

当我第一次运行时,我已经面临这个问题,然后又想再运行我得到的另一个项目:

The Tomcat connector configured to listen on port 8088 failed to start. The port may already be in use or the connector may be misconfigured.

Action:

Verify the connector's configuration, identify and stop any process that's listening on port 8088, or configure this application to listen on another port.

最后我得到了解决方案,如下面的屏幕截图所示:

在此输入图像描述

右键单击Console选项卡 - >并选择Terminate / Disconnect all现在尝试运行您的代码。

注意 :在再次运行之前, 不要忘记停止服务器。

如果您的应用程序在 httpS 上运行,请确保在以下属性下放置正确的值:

server.ssl.key-store-password=
server.ssl.key-alias=

当我在这里输入错误的值时,我遇到了同样的错误

这个问题可以通过两种方式解决:

  1. 杀死在 8080 上运行的应用程序
netstat -ao | find "8080" Taskkill /PID 1342 /F
  1. application.properties文件中更改 spring 服务器端口

server.port=8081

在 Windows 上:

首先,通过单击“开始”然后键入 cmd 打开命令提示符。 在命令窗口中,继续并输入以下命令:

netstat -a -n -o

在上面的命令中,-o 参数用于将 PID 添加到表的末尾。 按 Enter 键,您应该会看到如下内容:

在此处输入图片说明

现在要查看使用该端口的进程的名称,请按 CTRL + SHIFT + ESC 转到任务管理器,然后单击进程选项卡。 在 Windows 10 中,您应该单击“详细信息”选项卡。

默认情况下,任务管理器不显示进程 ID,因此您必须单击查看,然后单击选择列。

您可能还需要查看在后台运行的服务。 为此,请右键单击并选择打开的服务,如下所示:

在此处输入图片说明

希望能帮助到你 :)

  1. 检查繁忙的端口:netstat -ntlp
  2. 杀死那个端口:kill -9 xxxx

解决此问题的更简单方法是更改application.properties文件上的端口;

在此处输入图片说明

server.port=8081

有两种选择可以处理/避免这种情况。

  1. 在重新运行应用程序之前,只需终止之前的连接。
  • Open the console --> right click --> terminate all.
  1. 如果您忘记在步骤 1 中执行提及的操作,则
  • 找出您的应用程序使用的端口,您可以在控制台窗口中看到堆栈跟踪
  • 通过在cmd中执行netstat -aon命令找出与端口关联的进程ID
  • 终止该进程并重新运行应用程序。

如果你方便,又不想使用命令行,可以重启电脑,很有帮助!

对于那些在控制后遇到相同问题的人,没有分配端口的可疑 java 进程,eclipse 上没有红色方块可以终止任何进程,即使您为 spring boot 应用程序尝试不同的端口也没有变化。

可能听起来很愚蠢,但是; 重新启动 eclipse 工作。 :)

在您的 Windows 操作系统中,请按照以下步骤操作:


1) 搜索服务 2) 找到 Apache tomcat 3) 右键单击​​它并选择结束 4) 再次运行您的 Spring Boot 应用程序,它将起作用

我们在 eclipse 或 intellij 中遇到了同样的问题。 在尝试了许多替代解决方案后,我找到了简单的解决方案 - 将此配置添加到您的 application.properties: spring.main.web-application-type=none

如果您有像自动构建依赖项这样的开发工具,请删除它。 它会自动构建您的项目并运行它。 当您手动构建时,它会显示正在使用的端口。

如果上述解决方案均无效,并且您使用的是 IntelliJ Idea(我使用的是 2020.3 版),则可以转到服务选项卡并尝试右键单击正在运行的配置,然后单击清除内容。

运行服务器

查找端口的进程 ID (PID)(例如:8080)

在 Windows 上:

网络统计-ao | 找到“8080”

杀死你找到的进程ID(例如:20712)

在 Windows 上,在 cmd 中右键单击并打开以管理员身份运行:在此处输入图像描述

Taskkill /PID 20712 /F

对于 Spring Boot 2 及更高版本,将属性添加到您的应用程序配置文件(application.properties 或 application.yaml):

spring.main.web-application-type=SERVLET 

WebApplicationType 可以是以下之一:

  • 无 - 应用程序不应作为 web 应用程序运行,也不应启动嵌入式 web 服务器。
  • 反应性 - 应用程序应作为反应性 web 应用程序运行,并应启动嵌入式反应性 web 服务器。
  • SERVLET - 应用程序应作为基于 servlet 的 web 应用程序运行,并应启动嵌入式 servlet web 服务器。

右键单击控制台并停止

右键单击您的控制台并终止。 或点击停止

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM