提示找不到 redis.clients.jedis.Connection#sendCommand

前天用websocke做了个项目,收发消息嘛。
我在websocke收到消息的时候,需要操作redis数据库。
大概是这样↓

 @Override
    public void handleMessage(WebSocketSession session, WebSocketMessage<?> message)  {
      	redisCacheManager .set("name","jy");
    }

一直给我报错。

java.lang.NoClassDefFoundError: Could not find required flavor of command required by ‘redis.clients.jedis.Connection#sendCommand’.

如果照着网上的讲,是jedis和spirng-redis的包不兼容的问题。
这个问题,具体参考。装了无数遍完全没有用。

https://blog.csdn.net/Qizhan_feng/article/details/90216361

鼓捣了两天,真的整整两天没搞定。
最后在这个地方↓看到了解决方案。

https://segmentfault.com/q/1010000009789923

所以问题就是:其实是websocket类没有被spring管控,它就是个普通的类。直接在这里放spirng的注解会实例化一个错误的类。
我们需要手动从从当前application的getBen方法拿对应的service
方法如下:

https://www.cnblogs.com/againn/p/9013751.html

然后原方法里改成:

 redisCacheManager = (RedisCacheManager )ApplicationHelper.getBean("redisCacheManager ");
System.out.println(redisCacheManager .get("lion"));

大功告成!






分割线-----------------------------------------------------------

好了 ,我又遇到一模一样的错误了,晕。
重启项目之后上个方法不管用了。我震惊了,差点又想自闭。
沃曰,奇了怪了。

于是又找到了解决方法,
不知道什么原因,需要在使用这个报错的类之前,必须在其他地方实例化这个对象一次。
例如在一个Controller中先实例化一次这个。

 RedisCacheManager redisCacheManager = (RedisCacheManager)ApplicationHelper.getBean("redisCacheManager");

然后在websocket方法里,才能照着上面的方法用这个。千万别在websocket的方法里第一次实例化它。给我疯狂报错。我怀疑是不是websocket比较复杂,是不是多线程的问题或者单例多例的问题。毕竟我对这方面理解不深。





分割线-----------------------------------------------------------

哎 其实这个是写给我自己看的。。我不期待会有谁看得到。如果你有我一样的遭遇,希望能看到这个文章帮助你有一点思路。有用的话记得评论一下!我会看到很开心!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值