我正在运行一个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
时,它可以工作。任何人都可以提出一些建议做什么?非常感谢!
答案 0 :(得分:1)
当Web服务器访问繁忙时,我遇到类似的问题,因此您的服务器套接字可能具有 TIME_WAIT 状态,在这种情况下,春季启动中的tomcat-embeded-server无法绑定该端口因为 SO_REUSEADDR 未设置为true
所以我的解决方案是在春季启动时使用 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 ,然后再次运行该程序。