启动多个springboot项目时,控制台总是打印Address already in use: JVM_Bind的警告,但项目又都是正常运行。根据控制台打印的这条警告信息,会发现都是在启用35729端口时出错
根据报错信息查看LiveReloadServer.class源码,可以看到默认端口为DEFAULT_PORT = 35729
解决办法:
在application.propertie文件中配置热部署的端口(顺延就可),保证每个项目使用的端口不一致即可:
例:
spring.devtools.livereload.port=35730
spring.devtools.livereload.port=35731
package com.socketmodule.socketdemo6;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerDemo {
public static void main(String[] args) throws IOException {
//1. 创建Socket对象
ServerSocket ss = new ServerSocket(10000);//改成35729
//根据报错信息查看LiveReloadServer.class源码,
//可以看到默认端口为DEFAULT_PORT = 35729
//2. 等待客户端连接
System.out.println(111);
Socket accept = ss.accept();
System.out.println(222);
//3.获得输入流对象
InputStream is = accept.getInputStream();
int b;
while((b = is.read()) != -1){
System.out.print((char) b);
}
System.out.println("看看我执行了吗?");
//4.释放资源
is.close();
ss.close();
}
}
报错信息:
Exception in thread "main" java.net.BindException: Address already in use: NET_Bind
at java.base/java.net.PlainSocketImpl.bind0(Native Method)
at java.base/java.net.PlainSocketImpl.socketBind(PlainSocketImpl.java:132)
at java.base/java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:436)
at java.base/java.net.ServerSocket.bind(ServerSocket.java:386)
at java.base/java.net.ServerSocket.<init>(ServerSocket.java:248)
at java.base/java.net.ServerSocket.<init>(ServerSocket.java:140)
at com.socketmodule.socketdemo6.ServerDemo.main(ServerDemo.java:11)
Process finished with exit code 1
package com.socketmodule.socketdemo6;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerDemo {
public static void main(String[] args) throws IOException {
//1. 创建Socket对象
ServerSocket ss = new ServerSocket(35729);
//2. 等待客户端连接
System.out.println(111);
Socket accept = ss.accept();
System.out.println(222);
//3.获得输入流对象
InputStream is = accept.getInputStream();
int b;
while((b = is.read()) != -1){
System.out.print((char) b);
}
System.out.println("看看我执行了吗?");
//4.释放资源
is.close();
ss.close();
}
}