netty 之 telnet HelloWorld 详解

 

依赖工具

  • Maven

  • Git

  • JDK

  • IntelliJ IDEA

源码拉取

从官方仓库 https://github.com/netty/nettyFork 出属于自己的仓库。为什么要 Fork ?既然开始阅读、调试源码,我们可能会写一些注释,有了自己的仓库,可以进行自由的提交。😈

使用 IntelliJ IDEA 从 Fork 出来的仓库拉取代码。

本文使用的 Netty 版本为 4.1.26.Final-SNAPSHOT 。

Maven Profile

打开 IDEA 的 Maven Projects ,选择对应的 Profiles 。如下图所示:

 

  • jdk8 :笔者使用的 JDK 版本是 8 ,所以勾选了 jdk8 。如果错误的选择,可能会报如下错误:

    复制代码
    java.lang.NoSuchMethodError: java.nio.ByteBuffer.clear()Ljava/nio/ByteBuffer
    复制代码
  • linux : 选择对应的系统版本。😈 笔者手头没有 windows 的电脑,所以不知道该怎么选。

修改完成后,点击左上角的【刷新】按钮,进行依赖下载,耐心等待...

解决依赖报错

在 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 文件。

在 Github 上,也有多个针对这个情况讨论的 issue :

  • 关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信