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的版本

相关推荐
会编程的林俊杰13 天前
Redisson中的分布式锁
redis·分布式·redisson
鼠鼠我捏,要死了捏1 个月前
基于Redisson实现高并发分布式锁性能优化实践指南
性能优化·分布式锁·redisson
C182981825751 个月前
Redisson加锁脚本分析
redisson
C182981825751 个月前
Redisson解锁脚本分析
redisson
phantomsee1 个月前
Redis学习系列之——高并发应用的缓存问题(二)
redis·redisson
马里奥Marioぅ1 个月前
Redis主从切换踩坑记:当Redisson遇上分布式锁的“死亡连接“
redis·分布式锁·redisson·故障转移
xujinwei_gingko2 个月前
接口幂等性
分布式锁·redisson·接口幂等性
沉着的码农2 个月前
【分布式】Redisson滑动窗口限流器原理
java·redis·分布式·redisson
jstart千语2 个月前
【Redisson】锁可重入原理
redis·分布式·redisson