我在运行示例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
答案 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
解决方案: -
b。更改您的应用程序服务器端口,为其创建一个名为的文件 资源文件夹中的application.properties并添加属性
server.port = 8085
(8085可以替换为您选择的任何端口号,不会与其他端口号冲突 应用程序服务器端口)
P2。您的应用程序已在运行
解决方案
答案 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;。现在,如果你启动你的春季启动应用程序,它将开始没有问题。