运行Spring Boot应用程序时“正在使用地址:绑定”

时间:2016-01-15 05:01:33

标签: spring-boot

我在运行示例Spring Boot应用程序时遇到问题。 当我尝试运行它时,会发生以下错误:

 java.net.BindException: Address already in use: bind
            at sun.nio.ch.Net.bind0(Native Method)
            at sun.nio.ch.Net.bind(Unknown Source)
            at sun.nio.ch.Net.bind(Unknown Source)
            at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source)
            at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source)
            at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:473)
o.apache.catalina.core.StandardService   : Failed to initialize connector [Connector[org.apache.coyote.http11.Http11NioProtocol-8080]]

    org.apache.catalina.LifecycleException: Failed to initialize component [Connector[org.apache.coyote.http11.Http11NioProtocol-8080]]
            at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)
            at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)
            at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
            at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:814)
            at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
            at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:139)
            at org.apache.catalina.startup.Tomcat.start(Tomcat.java:335)
            at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.java:57)
            at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.<init>(TomcatEmbeddedServletContainer.java:52)
            at 

10 个答案:

答案 0 :(得分:6)

你第一次跑好吗?并再次运行它有一个错误? 如果正确,您需要在再次运行之前停止服务。 这是停下来的方法。 点击按钮停止看起来像这个图像 enter image description here

答案 1 :(得分:5)

&#34;已使用的地址&#34;意味着,已经有另一个应用程序在端口8080上运行。使用您的操作系统工具查找该进程并在启动应用程序之前结束它,或让您的应用程序在另一个端口上运行。如果在Boot应用程序中使用嵌入式服务器,则可以指定以下属性:

server.port=8085 

当然,你可以选择你想要的任何端口。

答案 2 :(得分:1)

我有一个非常简单的解决方案:

按照上面的回答,当您启动Spring Boot应用程序时,控制台下方将显示服务器下方的PID(Tomcat或Undertow或其他)。您可以在不终止前一个应用程序的情况下再次启动该应用程序,尤其是在调试模式下,因此会出现错误。这也适用于Intellij。

但是,如果您再次启动,则PID将不再可用,因为先前的会话输出已清除。

因此,如果您使用的是Eclipse,则将其关闭,然后打开任务管理器以终止其他java.exe JVM进程。确保没有其他无法停止的基于JVM的服务正在运行。 (例如Kafka服务器,Apache Storm等)

Tomcat实例就是其中之一。

答案 3 :(得分:0)

好像你的服务器已经启动了。如果您使用的是基于Linux的系统,请在终端中键入以下命令以检查系统上哪个端口处于活动状态。

  

“ps -ef | grep 8080”(或提到的任何端口)

如果您希望在同一端口上运行服务器,现在需要终止此服务器。

  

kill -9 8080

Voilla !!尝试再次启动您的应用程序,它将起作用。

<强>附加: 你会来找我抱怨一个重要的应用程序已经在听到提到的端口(8080)并且你不想杀死它。没有问题。

在资源文件夹中创建application.properties文件,并将端口更改为您喜欢的任何内容。

server.port = 8081

Voilla !!你做到了!! :) 如果需要进一步说明,请与我们联系。

答案 4 :(得分:0)

两种可能性

  

P1。另一个应用程序正在使用端口8080

解决方案: -

  • a。为您的应用程序提供应用程序和自由端口8080。
  • b。更改您的应用程序服务器端口,为其创建一个名为的文件 资源文件夹中的application.properties并添加属性

    server.port = 8085

  

(8085可以替换为您选择的任何端口号,不会与其他端口号冲突   应用程序服务器端口)

  1. location of application.properties file
  2. snippet of application.properties file
  3.   

    P2。您的应用程序已在运行

    解决方案

    • 一个。针对这种情况的非常简单的解决方 运行应用程序并重新运行它
    • b。如果您想运行应用程序的多个实例,请继续 当前应用程序运行更改服务器端口,如上所述和 运行应用程序,新实例将运行另一个端口。

答案 5 :(得分:0)

日志显示服务器已在端口8080上启动。我遇到了同样的问题。转到Windows任务管理器和结束进程javaw.exe,它在我的应用程序上工作。

答案 6 :(得分:0)

即使我遇到这个问题你也可以停止应用程序(顶部工具栏上有一个停止按钮)然后重新启动它对我有效并且我使用了STS

答案 7 :(得分:0)

在Eclipse情况下,检查“进度”窗口中是否有正在运行的项目(Windows>显示视图>进度) 停止正在运行的进程,这可能会锁定您想要的端口。

答案 8 :(得分:0)

遇到同样的错误。 springboot 应用程序内置了在 8080 端口上运行的 tomcat 服务器。 /p>

-->

 open command prompt as Administrator.
--> netstat -ano | findstr :<PORT>
       netstat -ano | findstr :8080
  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       10568
  TCP    [::]:8080              [::]:0                 LISTENING       10568
-->taskkill /PID <PID> /F
   taskkill /PID 10568 /F

现在如果您想使用 netstat -ano 重新检查您的运行进程 | findstr :8080 命令.. 并再次重新启动或重新运行我们的应用程序.. 这是您第一次想要运行 springboot 应用程序。 希望这可能会有所帮助,对我有用:)

第二种情况:

第一次跑没问题吧?并再次运行它有一个错误?如果正确,您需要在再次运行之前停止服务..如果是这种情况,请关注@Sang9xpro 上面的答案。

答案 9 :(得分:-1)

这是因为您已经在eclipse IDE中运行了一次spring boot应用程序并关闭了应用程序,并假设嵌入式服务器已停止。但事实并非如此。即使您在Eclipse中关闭了应用程序 - &gt;控制台窗口,嵌入式tomcat服务器正在运行。你可以做的是,再次运行你的spring启动应用程序并查看控制台消息。在Spring徽标之后,您可以立即找到PID 16676的开始。这是您需要在&#34; Wndows任务管理器中搜索的PID - &gt;流程 - &gt; PID&#34 ;.选择该过程和&#34;结束任务&#34;。现在,如果你启动你的春季启动应用程序,它将开始没有问题。