idea+jetty启动报错:java.net.BindException: Address already in use: bind

一.错误信息

2020-01-19 17:01:09.044:INFO:oejs.Server:main: jetty-9.2.1.v20140609
2020-01-19 17:01:09.093:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:/D:/JavaRuanJian/jetty-distribution-9.2.1.v20140609/webapps/] at interval 1
2020-01-19 17:01:09.101:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:/C:/Users/sendcloud/AppData/Local/Temp/context7442deploy/] at interval 1
2020-01-19 17:01:09.109:WARN:oejuc.AbstractLifeCycle:main: FAILED ServerConnector@619713e5{HTTP/1.1}{0.0.0.0:8080}: java.net.BindException: Address already in use: bind
java.net.BindException: Address already in use: bind
	at sun.nio.ch.Net.bind0(Native Method)
	at sun.nio.ch.Net.bind(Net.java:433)
	at sun.nio.ch.Net.bind(Net.java:425)
	at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
	at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
	at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:279)
	at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
	at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:218)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
	at org.eclipse.jetty.server.Server.doStart(Server.java:336)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
	at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1255)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1174)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.eclipse.jetty.start.Main.invokeMain(Main.java:306)
	at org.eclipse.jetty.start.Main.start(Main.java:755)
	at org.eclipse.jetty.start.Main.main(Main.java:108)

二.背景

微服务项目,调试时需要同时启动多个项目。其中jetty用的是本地下载的jetty,单独启动其中某个项目可以成功;但同时启动就失败,第二个项目报错

需要注意的是,上图错误日志第4行指出被占用的是8080端口。我项目一指定的是8081端口,项目二指定的是8082端口。为什么报错8080端口被占用?

应该是jetty占用的,我的jetty版本是9.2,查看本地jetty的配置文件,默认端口配置没有发现为8080的(应该是我没有找到)

三.分析:从错误信息上看,是8080端口被占用了,cmd查找8080端口被哪个进程占用

在这里插入图片描述
任务管理器中找到PID为24232的进程
idea+jetty启动报错:java.net.BindException: Address already in use: bind_第1张图片
关闭该进程定第一次启动的项目也关闭了,依然不能同时启动两个项目

四.解决方案

本地下载一个9.4版本的jetty,一个项目用jetty9.2启动,一个项目用jetty9.4启动(或者两个项目都用jetty9.4启动),多个项目同时启动成功。
idea+jetty启动报错:java.net.BindException: Address already in use: bind_第2张图片
在这里插入图片描述
idea+jetty启动报错:java.net.BindException: Address already in use: bind_第3张图片

jetty 9.4 不会报8080端口被占用,你配的是什么端口,启动就是什么端口

在这里插入图片描述
在这里插入图片描述

五.总结

这个是jetty9.2版本的一个bug,不能同时启动多个服务;在jetty9.4中已经修复。一般而言jetty和jdk的版本是对应的,jdk1.7对应jetty9.2;jdk1.8对应jetty9.4。不过jetty高版本可以向下兼容,也就是说用jetty9.4可以启动jdk1.7编写的项目,反过来用jetty9.2去启动jdk1.8的项目会报错。

六下载

jetty官方历史版本下载链接

你可能感兴趣的:(环境搭建,bug积累)