org.apache.dubbo.rpc.RpcException: Fail to start server 和 No provider available for the service 的解决方法
出现问题的原因有两种
1.端口冲突
2.jar包冲突
先来说一下jar包冲突吧
这是我遇到的问题,天坑!!!
Caused by: java.lang.NoSuchMethodError: io.netty.util.concurrent.SingleThreadEventExecutor.<init>(Lio/netty/util/concurrent/EventExecutorGroup;Ljava/util/concurrent/Executor;ZLjava/util/Queue;Lio/netty/util/concurrent/RejectedExecutionHandler;)V
at io.netty.channel.SingleThreadEventLoop.<init>(SingleThreadEventLoop.java:65)
at io.netty.channel.nio.NioEventLoop.<init>(NioEventLoop.java:141)
at io.netty.channel.nio.NioEventLoopGroup.newChild(NioEventLoopGroup.java:183)
at io.netty.channel.nio.NioEventLoopGroup.newChild(NioEventLoopGroup.java:38)
at io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:84)
at io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:58)
at io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:47)
at io.netty.channel.MultithreadEventLoopGroup.<init>(MultithreadEventLoopGroup.java:59)
at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:87)
at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:82)
at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:69)
解决方法为:
将dubbo 中的netty依赖排除掉
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.6</version>
<exclusions>
<exclusion>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
</exclusion>
</exclusions>
</dependency>
原因
dubbo 和 zokeeper 中的netty版本不一致
SingleThreadEventExecutor.<init>
导致方法的构造函数参数不匹配所以出现了异常
Caused by: java.lang.NoSuchMethodError: io.netty.util.concurrent.SingleThreadEventExecutor.<init>(Lio/netty/util/concurrent/EventExecutorGroup;Ljava/util/concurrent/Executor;ZLjava/util/Queue;Lio/netty/util/concurrent/RejectedExecutionHandler;)V
端口冲突的问题
错误信息为
Caused by: java.net.BindException: Address already in use
解决方法
ubuntu->
第一步
lsof -i:20867(20867请换为你的服务端口)
第二步
kill 17333886 (17333886 请换为你的服务PID)
@@@@@@@@@@@@@@@
最后说一下这个坑 !!
No provider available for the service
这真的是个天坑 caocaocao,原本在本地运行好好的提供商,但是发布到了服务器就不行了,弄了老半天是因为,dubbo发布的服务网站为内网网址。
原因
因为dubbo注册到zookeeper的服务ip为内网ip而不是公网ip
解决方法
第一步
输入 hostname
第二步
输入 vim /etc/hosts
修改
最后行
127.0.1.1
修改后
完成
版权声明:本文为fruit1111原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。