Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试从Spring工具套件IDE重新部署项目时,8080端口已出现问题_Java_Spring_Spring Mvc_Tomcat_Spring Boot - Fatal编程技术网

Java 尝试从Spring工具套件IDE重新部署项目时,8080端口已出现问题

Java 尝试从Spring工具套件IDE重新部署项目时,8080端口已出现问题,java,spring,spring-mvc,tomcat,spring-boot,Java,Spring,Spring Mvc,Tomcat,Spring Boot,当我试图在Spring工具套件中修改Spring项目时,我遇到了一件奇怪的事情。在第一次加载(部署)时,一切正常,应用程序在localhost:8080上编译和运行 当我更改代码内部的某些内容并尝试重新部署它(再次运行它-作为Spring Boot应用程序运行)时,我会收到错误消息 ***************************应用程序无法启动 说明: 配置为在端口8080上侦听的Tomcat连接器无法连接 开始端口可能已在使用中,或者连接器可能已损坏 配置错误 行动: 验证连接器的配

当我试图在Spring工具套件中修改Spring项目时,我遇到了一件奇怪的事情。在第一次加载(部署)时,一切正常,应用程序在localhost:8080上编译和运行

当我更改代码内部的某些内容并尝试重新部署它(再次运行它-作为Spring Boot应用程序运行)时,我会收到错误消息

***************************应用程序无法启动


说明:

配置为在端口8080上侦听的Tomcat连接器无法连接 开始端口可能已在使用中,或者连接器可能已损坏 配置错误

行动:

验证连接器的配置,确定并停止任何过程 正在侦听端口8080,或将此应用程序配置为侦听 在另一个港口

2016-10-19 00:01:22.615信息10988---[main] ationConfigEmbeddedWebApplicationContext:关闭 org.springframework.boot.context.embedded。AnnotationConfigEmbeddedWebApplicationContext@3023df74: 启动日期【2016年10月19日星期三00:01:19】;语境的根源 层次结构2016-10-19 00:01:22.616信息10988---[main] o、 s.j.e.a.AnnotationMBeanExporter:正在注销JMX 关闭的豆子

若我手动关闭那个端口上的进程,一切都会恢复正常,但这不是重新部署Spring应用程序的正确方法。我做错什么了吗

我正在使用::Spring Boot::(v1.4.1.RELEASE)

另外,我知道我可以设置某种热插拔机制,在我更改代码后自动重新加载页面,但现在我想先解决这个问题

感谢您提供的任何帮助或信息

我做错什么了吗

是的,你是。一个servlet容器已经在端口8080上运行,您正在尝试再次在端口8080上运行另一个servlet容器


重新启动服务器(如果STS中有此按钮)或停止并启动它

这是一个典型的启动失败,因为嵌入式servlet容器的端口正在使用中

您的嵌入式tomcat容器无法启动,因为端口8080已在使用中


只需识别并停止正在侦听端口8080的进程,或配置(在您的应用程序.properties文件中)此应用程序以侦听另一个端口。

您必须停止当前进程并运行新进程。在Eclipse中,您可以按此按钮重新启动应用程序:

在我的示例中,由于应用程序无法访问ssl的密钥库,因此发生了错误


以root用户身份启动应用程序解决了这个问题。

只需单击红色按钮停止eclipse上的所有服务,然后将应用程序作为Spring Boot应用程序重新运行,这对我来说很有效

有时甚至当我们在IDE中使用红色按钮停止运行进程时,也会出现同样的错误

通过以下步骤解决了这个问题:

  • 检查哪些进程正在可用端口上运行

    netstat-ao |查找/i“侦听”

    我们得到了以下消息

    TCP 0.0.0.0:7981机器名称:0侦听2428
    TCP 0.0.0.0:7982机器名称:0侦听2428
    TCP 0.0.0.0:8080机器名称:0 12704
    TCP 0.0.0.0:8500机器名称:0侦听2428

    i、 e.端口号和它们正在侦听的进程Id

  • 停止在端口号处运行的进程(在本例中为8080,进程Id为12704)

    Taskkill/F/IM 12704
    (注意:提及正确的进程Id)

  • 有关更多信息,请访问以下链接和


    我的问题就这样解决了,希望这有帮助

    如果您在控制台上说“Embedded servlet container无法启动。端口8080已在使用”,然后转到application.properties文件并添加此属性“server.Port=8090”

    实际上,spring引导的默认端口是8080,如果该端口上有其他端口,则会出现上述错误。因此,我们在application.properties文件中添加“server.port=8090”,要求spring boot在其他端口上运行。

    在浏览器上打开“localhost:8080”,查看此端口上运行的是什么。
    我这样做了,我发现Oracle 10g XE在后台运行,所以我转到开始->服务并停止所有Oracle服务。然后我在IntelliJ上重做
    mvnw spring boot:run
    ,它会像魔术一样运行。

    有两种方法可以解决这个问题。首先尝试选项1,如果不起作用,尝试选项2,问题就解决了

    1) 在控制台的右上角,有一个红色按钮,用于停止已经在此端口上运行的spring boot应用程序,只需单击红色按钮即可终止


    2) 如果红色按钮未激活,则需要右键单击控制台并选择terminate/disconnect all。希望这有帮助


    额外提示:-如果您希望在您选择的其他端口上运行服务器,请在maven项目的资源文件夹中创建一个名为application.properties的文件,并写入服务器。port=3000要在Linux机器上的端口3000上运行应用程序,请保存bash脚本并执行它。如果要释放端口8080,请在提示时输入8080

    echo "Enter port number to be closed :: "
    read port
    sudo kill $(sudo lsof -t -i:$port)
    
    对于Mac用户(
    OS X El Capitan
    ):

    您需要终止运行
    localhost:8080
    的端口。
    为此,您需要在终端中执行两个命令:N

    sudo lsof -i tcp:8080
    
    kill -15 PID 
    
    注意
    PID
    是由第一个命令提供的数字

    第一个命令为
    localhost:8080


    将第二个命令中的
    PID
    替换为第一个命令提供的
    PID
    ,以终止运行在
    localhost:8080

    上的进程,在application.properties中创建一个简单的行作为服务器\u\p
    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
    
    sudo lsof -t -i tcp:8181 | xargs kill -9
    
    sudo lsof -i tcp:8181
    
    kill -9 PID
    
    kill `lsof -i -n -P | grep TCP | grep 8080 | tr -s " " "\n" | sed -n 2p`
    
    //open context.
    ConfigurableApplicationContext appContext = SpringApplication.run(Application.class, args);
    ...
    //in the end, close it
    appContext.close();
    
    try(ConfigurableApplicationContext appContext =
     SpringApplication.run(Application.class, args))
    {
    // your code here
    }