org.apache.dubbo.rpc.RpcException: Fail to start server 和 No provider available for the service 的解决

  • Post author:
  • Post category:其他




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 版权协议,转载请附上原文出处链接和本声明。