Java Netty BindException: Address already in use 解决方案
Java Netty BindException: Address already in use 解决方案
在启动 Java Netty 应用程序时,您可能会遇到以下错误:
PS D:\IdeaProjects\keshe\out\artifacts\keshe_jar> java -jar keshe.jar MultiChatServer
Exception in thread "main" 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 io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:132)
at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:551)
at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1345)
at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:503)
at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:488)
at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:984)
at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:247)
at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:355)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:416)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:515)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:918)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Unknown Source)
这个错误是因为您尝试绑定的端口已经被另一个程序占用。
以下是解决此问题的步骤:
-
找到占用端口的程序
- 打开命令提示符或终端窗口。
- 输入命令
netstat -ano | findstr :端口号,其中“端口号”是您的程序尝试使用的端口号。 - 例如,如果您的程序尝试使用端口 8080,则命令为
netstat -ano | findstr :8080。
-
停止占用端口的程序
- 在
netstat命令的输出中找到占用该端口的进程ID(PID)。 - 输入命令
taskkill /pid 进程ID /f,其中“进程ID”是您在上一步骤中找到的进程ID。 - 例如,如果进程ID为 1234,则命令为
taskkill /pid 1234 /f。
- 在
-
重新运行程序
- 现在您可以重新运行您的 Netty 应用程序,它应该能够成功绑定到端口。
可选步骤:
- 如果您希望您的程序使用不同的端口,您可以修改代码以绑定到另一个可用端口。
- 您也可以尝试使用
netstat命令找到一个未使用的端口,并将其用作您的程序的端口。
注意:
- 某些程序可能需要管理员权限才能停止。
- 在停止占用端口的程序之前,请确保您了解该程序的作用,以免造成意外后果。
原文地址: http://www.cveoy.top/t/topic/f1ZI 著作权归作者所有。请勿转载和采集!