端口号占用解决
端口号占用解决
服务端main程序已经启用,再次运行main程序,则会报告端口号被占用的错误。下面是解决办法1.WIN+R键(Windows图标键和字母R键)打开运行窗口
![运行窗口](https://i-blog.csdnimg.cn/blog_migrate/e59b931aa135116eed381486d3d9b5e2.png)
![DOS窗口查看进程对应的端口号](https://i-blog.csdnimg.cn/blog_migrate/a8a4893f4c4d26966ba57b35840b4145.png)
public static void main(String[] args) {
// 通信器
Communicator ic = null;
// 初始化通信器
ic = Util.initialize(args);
// 创建ICE适配器,将服务调用地址和服务映射起来
// “HelloServiceAdapter”是适配器名,“default -p 1888”是服务调用的地址
ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints("HelloServiceAdapter", "default -p 1888");
// 将服务的具体实现类servant交给这个适配器
Ice.Object servant = new HelloI();
// "HelloIce" 服务接口在ICE中的注册名,转成唯一标识identity
Identity id = Util.stringToIdentity("HelloIce");
adapter.add(servant, id);
// 激活这个适配器
adapter.activate();
log.info("Server服务器容器启动成功!");
}
这里明确了端口号是1888,所以我们找端口号为1888的进程PID
报错信息如下: Address already in use: bind
Exception in thread "main" Ice.SocketException
error = 0
at IceInternal.Network.doBind(Network.java:307)
at IceInternal.TcpAcceptor.listen(TcpAcceptor.java:35)
at IceInternal.IncomingConnectionFactory.createAcceptor(IncomingConnectionFactory.java:591)
at IceInternal.IncomingConnectionFactory.<init>(IncomingConnectionFactory.java:411)
at Ice.ObjectAdapterI.<init>(ObjectAdapterI.java:1040)
at IceInternal.ObjectAdapterFactory.createObjectAdapter(ObjectAdapterFactory.java:169)
at Ice.CommunicatorI.createObjectAdapterWithEndpoints(CommunicatorI.java:101)
at com.zgd.ice.service.impl.HelloServer.main(HelloServer.java:21)
Caused by: 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 IceInternal.Network.doBind(Network.java:301)
... 7 more
![根据端口号确认进程PID](https://i-blog.csdnimg.cn/blog_migrate/2175fd5e06e68fb46e42b440bf84fce3.png)
![根据端口号确认进程PID](https://i-blog.csdnimg.cn/blog_migrate/74f83642b44d8e74983ea11f750b1dad.png)
![根据进程名称“杀死”相关进程](https://i-blog.csdnimg.cn/blog_migrate/30c47bbcfd1d7523bf290b9b6feadb4e.png)
注意:
一般来说,java执行过程中出现端口号占用的情况,而又不清楚占用的端口号是多少,则可以在任务管理器中直接“杀死” javaw.exe进程解决
![直接杀死javaw.exe进程](https://i-blog.csdnimg.cn/blog_migrate/bbdbb13ce64d284d97f1c3ed96327945.png)