随着个人学习进度陆续补充中间件、源码环境搭建的过程。
Netty源码环境搭建
下载
从github下载netty源码:https://github.com/netty/netty
jdk环境选择jdk8:
然后刷新maven,等待一段时间
解决报错
依赖下载完成后,在 codec-redis
模块中,类 FixedRedisMessagePool 会报如下类不存在的问题:
import io.netty.util.collection.LongObjectHashMap;
import io.netty.util.collection.LongObjectMap;
解决方式如下:
cd common;
mvn clean compile;
-
跳转到
common
模块中,编译生成对应的类。为什么可以通过编译生成对应的类呢,原因参见common
模块的src/java/templates/io/netty/util/collection
目录下的.template
文件。编译后,common包会生成对应缺少类的class文件,此时类
FixedRedisMessagePool
就不报错了
在 Github 上,也有多个针对这个情况讨论的 issue :
- 《Can not find class io.netty.util.collection.LongObjectHashMap in 4.1.8.final》
- 《io.netty.util.collection.LongObjectHashMap not found at branch 4.1》
example 模块
在 example
模块里,官网提供了多个 Netty 的使用示例。
我这里使用DiscardServer
类验证:启动成功