【tomcat】启动报错:Failed to initialize end point associated with ProtocolHandler ["http-apr-8080"] java.lang.Exception: Socket bind failed 和java.net.BindException: Address already in use: JVM_Bind错误解决
转载自:https://www.cnblogs.com/sxdcgaq8080/p/6626995.html
将开发机子上的Tomcat连同其中的项目,一起拷贝到服务器上,启动tomcat的start.bat,然后报错如下:
问题1:

Failed to initialize end point associated with ProtocolHandler ["http-apr-8080"]
java.lang.Exception: Socket bind failed: [730048] ?????????×???(Э?é/???????/???)????í??
严重: Failed to initialize connector [Connector[HTTP/1.1-8080]]
严重: Failed to initialize connector [Connector[AJP/1.3-8009]]
这些错误的核心!
分析问题:
发生这类型错误,在启动tomcat的时候,就预测到了,服务器上原本就有一个tomcat6.0,那个tomcat也在启动运行中,避免端口占用,更改了新的tomcat下的conf文件中的server.xml中的端口配置
解决问题:
将这三个位置的端口号都改变,如果还报相同的错误,说明端口号依然被占用,注意错误中明显的错误:
类似于这样--->Failed to initialize connector [Connector[AJP/1.3-8009]]
那就更改相应位置的端口号。
直到所有的位置都更改正确可以正常启动即可。
错误2:
上面的问题解决完成后,启动tomcat,又是闪退,盯着错误出现的时候,瞬间定住滚动条,截图如下错误
java.net.BindException: Address already in use: JVM_Bind
分析问题:
不是端口占用已经解决了么,项目都启动完成了,为什么还会有类似的错误出现?
解决问题:
---->在Ctrl+R进入运行,cmd进入命令窗口
---->输入netstat -ao
---->查看各个端口的占用情况和这个端口的PID
---->然后找到你tomcat中的那三个端口号,在这里已经出现的,也就是被占用的进程,对应最后一列的PID号
---->然后记住PID号,进入服务器的任务管理器,进入性能页的资源监视器,点击资源监视器中的CPU选项卡,对比PID号找到那个占用了端口的进程
---->查找到对应的进程后,如果本进程没有多大用,就直接干掉他,要是有用--没办法,自己回去把自己tomcat中的那个被人家占用的端口号改成其他没有被用的端口号
---->更改完成之后,重新启动自己的tomcat,就可以启动成功了
总结:主要原因是端口被占用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构