Spring Boot:配置为侦听端口8080的Tomcat连接器无法启动

时间:2018-08-14 23:17:08

标签: java spring spring-boot

我正在运行一个Spring Boot程序,起初一切都很好。但是在我按下import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage primaryStage) throws Exception{ Group popup = new Group(); Image image = new Image("https://image.ibb.co/hUMzWU/1.gif"); ImageView view = new ImageView(image); popup.getChildren().add(view); Scene dialogScene = new Scene(popup); primaryStage.setScene(dialogScene); primaryStage.setTitle("Testing Gif Stuff"); primaryStage.show(); } public static void main(String[] args) { launch(args); } } 并停止了程序之后,我重新启动了程序并遇到以下错误:

ctrl + c

我的程序是一个jar文件,因此我以*************************** APPLICATION FAILED TO START *************************** Description: The Tomcat connector configured to listen on port 8080 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 8080, or configure this application to listen on another port. 开始,然后以java -jar myJar停止。

起初,我认为这是因为使用了8080端口。但是,当我尝试以下命令时,发现端口8080上没有任何运行,

ctrl + c

所以我认为端口8080上没有运行任何进程,但是为什么spring会给我该错误?

我尝试了另一个端口8081,再次遇到相同的问题。但是当我使用lsof -i:8080 # shows nothing sudo lsof -i tcp:8000 # shows nothing 时,它可以工作。任何人都可以提出一些建议做什么?非常感谢!

2 个答案:

答案 0 :(得分:1)

当Web服务器访问繁忙时,我遇到类似的问题,因此您的服务器套接字可能具有 TIME_WAIT 状态,在这种情况下,春季启动中的tomcat-embeded-server无法绑定该端口因为 SO_REUSEADDR 未设置为true enter image description here

所以我的解决方案是在春季启动时使用 Jetty ,您可以更改 pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

答案 1 :(得分:0)

在运行Tomcat时按 ctrl + c 会发生这种情况。这将使端口处于等待状态。首先使用以下命令释放状态: fuser 8080 -k ,然后再次运行该程序。