Redisson最新版本(3.50.0左右)启动时提示Netty的某些类找不到

文章目录

一、写在前面

Redisson最新版本,大概3.47.0,在JDK8环境下(实测JDK17也一样)会提示Netty的某些类找不到:

java 复制代码
Exception in thread "main" java.lang.NoClassDefFoundError: io/netty/channel/unix/DomainSocketChannel
	at org.redisson.client.RedisClient.createBootstrap(RedisClient.java:142)
	at org.redisson.client.RedisClient.<init>(RedisClient.java:127)
	at org.redisson.client.RedisClient.create(RedisClient.java:84)
	at org.redisson.connection.MasterSlaveConnectionManager.createClient(MasterSlaveConnectionManager.java:341)
	at org.redisson.connection.MasterSlaveConnectionManager.connectToNode(MasterSlaveConnectionManager.java:121)
	at org.redisson.connection.MasterSlaveConnectionManager.connectToNode(MasterSlaveConnectionManager.java:108)
	at org.redisson.connection.ClusterConnectionManager.doConnect(ClusterConnectionManager.java:97)
	at org.redisson.connection.MasterSlaveConnectionManager.connect(MasterSlaveConnectionManager.java:188)
	at org.redisson.connection.ConnectionManager.create(ConnectionManager.java:98)
	at org.redisson.Redisson.<init>(Redisson.java:76)
	at org.redisson.Redisson.create(Redisson.java:119)
	at com.demo.springbootdemo.SpringbootDemoApplication.main(SpringbootDemoApplication.java:25)
Caused by: java.lang.ClassNotFoundException: io.netty.channel.unix.DomainSocketChannel
	at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
	... 12 more

二、解决方案

1、解决方案

是因为缺少 Netty 相关的 Unix 域套接字依赖包。

Netty 的 Unix 域套接字支持位于独立的 netty-transport-native-unix-common 包中,而 Redisson 某些功能(如对 Unix 域套接字的支持)依赖于此包。解决方法是在项目依赖中添加对应的 Netty 原生传输包。

如果是 Maven 项目,可添加以下依赖:

xml 复制代码
<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-transport-native-unix-common</artifactId>
    <version>4.1.77.Final</version> <!-- 版本需与Redisson依赖的Netty版本匹配 -->
</dependency>

如果是 Gradle 项目,可添加:

json 复制代码
implementation 'io.netty:netty-transport-native-unix-common:4.1.77.Final'

注意:Netty 版本需要与 Redisson 3.50.0 所依赖的 Netty 版本保持一致(Redisson 3.50.0 通常依赖 Netty 4.1.77 系列),建议通过查看项目依赖树确认具体版本后再添加,避免版本冲突。

2、一劳永逸

如果报错不是提示这个错误,而是别的类找不到,可以考虑直接引入netty-all

xml 复制代码
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>4.1.77.Final</version>
        </dependency>

一定要注意netty的版本!!!

3、确定redisson依赖netty的版本

相关推荐
装不满的克莱因瓶10 天前
深入理解 Redisson 原理:Redis 不只是缓存,更是分布式协调器
java·redis·分布式·架构·分布式锁·redisson
金融支付架构实战指南16 天前
Redisson 组件 + 支付业务场景落地对照表
支付·分布式锁·redisson·锁续期·锁超时
霸道流氓气质20 天前
Redisson 看门狗机制详解:分布式锁如何自动续期防止提前过期
分布式·redisson·看门狗
Thanks_ks1 个月前
分布式锁:Redis 与 Redisson 的工程实践与避坑指南
java·redis·分布式锁·redisson·微服务架构·并发编程·高可用
小道仙971 个月前
Redisson源码解析,分布式锁解析
redis·分布式锁·redisson
恼书:-(空寄1 个月前
Redisson 原理与最佳实践
redis·分布式锁·redisson
__土块__2 个月前
Java 大厂一面模拟:从线程池拒绝策略到分布式锁选型的连环压问
线程池·分布式锁·redisson·java面试·拒绝策略·大厂一面·kafka幂等
__土块__2 个月前
一次电商秒杀系统架构评审:从本地锁到分布式锁的演进与取舍
java·redis·高并发·分布式锁·redisson·架构设计·秒杀系统
better_liang2 个月前
每日Java面试场景题知识点之-Redisson热门使用场景
java·redis·微服务·分布式锁·redisson·分布式系统
better_liang2 个月前
每日Java面试场景题知识点之-Redisson核心价值与优化点详解
java·redis·分布式锁·redisson·微服务架构·分布式系统·缓存优化