跟着 Netty in Action 这本书学习 Netty,结果第一个 app 搞了两天都没跑起来,主要卡在 Gradle 编译这一块了。

这篇文章就详细记录了搭建开发环境和编译 Netty app 的详细步骤,免得以后又忘了。

搭建开发环境

基本步骤:

  1. http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载 JDK 最新版本装好。

  2. 访问 http://sdkman.io/install.html 页面,按照步骤安装 SDKMAN,然后重启终端。

    curl -s "https://get.sdkman.io" | bash
  3. 安装 Gradle。

    sdk install gradle

以上步骤如果下载很慢,请默念“FXXK GFW”一百遍!

建立工程结构

新建一个空白目录,在其中执行(如果这一步出错,说明 gradle 版本太老):

gradle init --type java-appliaction

执行后就得到一个基本的 java app 工程结构了。

现在打开 build.gradle,修改依赖为:

dependencies {
compile 'io.netty:netty-microbench:4.1.6.Final'
// Use JUnit test framework
testCompile 'junit:junit:4.12'
}

执行:

gradle run

如果一切正常,会看到执行结果 Hello world.

创建 Netty Server

这里我们选用 Netty in Action 里第二章的 EchoServer 示例来实践。

  1. 在工程目录 src/main/java/ 中建立子目录 nettyapp/

  2. https://github.com/normanmaurer/netty-in-action 下载所有源代码,并解压缩。

  3. src/main/java/com/manning/nettyinaction/chapter2/ 中的所有文件复制到我们工程 src/main/java/nettyapp/ 目录中。

  4. 删除 src/main/java/App.java 文件。

  5. 修改所有文件的 package:

    package com.manning.nettyinaction.chapter2;

    修改为

    package nettyapp;
  6. 修改 src/main/java/nettyapp/EchoServer.javamain() 方法为:

    public static void main(String[] args) throws Exception {
    new EchoServer(8080).start();
    }
  7. 修改 build.gradle:

    mainClassName = 'nettyapp.EchoServer'
  8. 执行:

    gradle run

    如果显示 nettyapp.EchoServer started and listen on /0:0:0:0:0:0:0:0:8080 表示我们的 netty app 已经跑起来了。

如果需要分发编译好的 netty app,执行:

gradle distZip

可以将 netty app 打包为 .zip 文件,并且包含各种环境下需要的启动脚本和支持库。

-EOF-