Ubuntu 22.04 安装 Apache MINA 2.2.9 指南

Ubuntu 22.04 安装 Apache MINA 2.2.9(Java NIO 网络应用框架库)指南:JDK 17 与 Maven 3.6.3 环境准备、版本选型、官方二进制发行包下载与 SHA-512 校验、dist/lib 目录结构解析、Maven 依赖与手工 classpath 两种引入方式、验证与卸载,全程实测。

Apache MINAApache MINA2026/10/12

Ubuntu 22.04 安装 Apache MINA 2.2.9 指南

目标:在 Ubuntu 22.04 服务器上完成 Apache MINA 2.2.9(Java NIO 网络应用框架,以 jar 库形态提供)的安装与验证。本文覆盖 JDK 17 与 Maven 3.6.3 环境准备、2.x 版本选型、官方二进制发行包下载与 SHA-512 校验、dist/lib 目录结构、Maven 依赖与手工 classpath 两种引入方式,以及验证、卸载与常见问题。所有命令与回显均在 Ubuntu 22.04.5 + JDK 17 环境实测通过。

一、环境信息

  • 操作系统:Ubuntu 22.04.5 LTS(VERSION_CODENAME=jammy)
  • 架构:x86_64(内核 6.8.0-138-generic)
  • Java:OpenJDK 17.0.20.1(openjdk-17-jdk-headless)
  • 构建工具:Apache Maven 3.6.3(Ubuntu 官方源)
  • MINA 版本:2.2.9(官方二进制发行包 apache-mina-2.2.9-bin.tar.gz)
  • 安装目录:/opt/mina/
  • 演示账号:root(密码 q1w2e3r4,仅用于本文命令演示)

💡 说明:Apache MINA(Multifunction Integrated Network Architecture)是一个基于 Java NIO 的网络应用框架,以 jar 库形态提供(org.apache.mina.*),本身没有独立守护进程或固定服务端口;所谓「安装」本质是准备好 JDK/构建环境,并把 mina-core 等 jar 引入到你的 Java 工程。网络服务端口由应用自身绑定。

二、前置条件

2.1 更新软件源

sudo apt-get update

2.2 安装 JDK 17 与 Maven

MINA 2.2.x 的编译目标为 Java 8 及以上,运行于 JDK 17 完全兼容(Ubuntu 22.04 官方源已内置):

sudo apt-get install -y openjdk-17-jdk-headless maven wget

验证系统、JDK 与 Maven(一条命令同时输出):

cat /etc/os-release | head -5; uname -m; java -version 2>&1; mvn -version | head -5

实测回显:

PRETTY_NAME="Ubuntu 22.04.5 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.5 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
x86_64
openjdk version "17.0.20.1" 2026-08-18
OpenJDK Runtime Environment (build 17.0.20.1+1-1-22.04-Ubuntu)
OpenJDK 64-Bit Server VM (build 17.0.20.1+1-1-22.04-Ubuntu, mixed mode, sharing)
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 17.0.20.1, vendor: Ubuntu, runtime: /usr/lib/jvm/java-17-openjdk-amd64
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "6.8.0-138-generic", arch: "amd64", family: "unix"

三、版本选型说明

Apache MINA 2.x 各主线情况如下:

版本线状态适用场景结论
2.0.x旧维护线,仅修关键 bug存量系统新项目不推荐
2.1.x过渡线,功能基本冻结存量升级视需要
2.2.x当前稳定主线(本文实测 2.2.9)新项目采用 2.2.9

💡 版本选择建议:新项目直接采用当前稳定主线 2.2.9;存量 2.0/2.1 工程可平滑升级到 2.2.x,包名 org.apache.mina 不变,API 基本兼容。

四、部署步骤

4.1 方案 A:官方二进制发行包(离线 / 手工 classpath 场景)

创建目录并下载发行包与官方 SHA-512 校验文件:

mkdir -p /opt/mina && cd /opt/mina
wget -q https://dlcdn.apache.org/mina/mina/2.2.9/apache-mina-2.2.9-bin.tar.gz
wget -q https://dlcdn.apache.org/mina/mina/2.2.9/apache-mina-2.2.9-bin.tar.gz.sha512

4.2 校验 SHA-512

查看官方校验文件内容,并计算本地文件的 SHA-512 摘要比对:

cat apache-mina-2.2.9-bin.tar.gz.sha512
sha512sum apache-mina-2.2.9-bin.tar.gz

实测回显:

./apache-mina-2.2.9-bin.tar.gz: DDA5B042 4AD3A9E4 B93121E9 31194EB9 53E9673D
                                3D67DBAC B221163C DBC69EFB 1A6751E5 05ECB027
                                F594F101 8A77B02E 624023D2 0727456E 583CC87C
                                A26BC2AA
dda5b0424ad3a9e4b93121e931194eb953e9673d3d67dbacb221163cdbc69efb1a6751e505ecb027f594f1018a77b02e624023d20727456e583cc87ca26bc2aa  apache-mina-2.2.9-bin.tar.gz

cat 输出为官方 .sha512 文件内容(大写分段展示),sha512sum 输出为本地计算的小写摘要,两者数值一致,校验通过。

4.3 解压并查看目录结构

tar -xzf apache-mina-2.2.9-bin.tar.gz && ls -l apache-mina-2.2.9

实测回显:

total 48
-rw-r--r-- 1 root root  1639 Jun 13 14:46 LICENSE.jzlib.txt
-rw-r--r-- 1 root root  1153 Jun 13 14:46 LICENSE.slf4j.txt
-rw-r--r-- 1 root root 10174 Jun 13 14:46 LICENSE.springframework.txt
-rw-r--r-- 1 root root 10174 Jun 13 14:46 LICENSE.txt
-rw-r--r-- 1 root root  1166 Jun 13 14:46 NOTICE.txt
-rw-r--r-- 1 root root  2307 Jun 13 14:46 README.md
drwxr-xr-x 2 root root  4096 Oct 11 16:23 dist
drwxr-xr-x 2 root root  4096 Oct 11 16:23 lib

4.4 发行包结构:dist 与 lib

ls /opt/mina/apache-mina-2.2.9/dist
ls /opt/mina/apache-mina-2.2.9/lib

实测回显(dist,MINA 各组件 jar):

mina-core-2.2.9.jar
mina-example-2.2.9.jar
mina-filter-compression-2.2.9.jar
mina-http-2.2.9.jar
mina-integration-beans-2.2.9.jar
mina-integration-jmx-2.2.9.jar
mina-integration-ognl-2.2.9.jar
mina-integration-xbean-2.2.9.jar
mina-statemachine-2.2.9.jar
mina-transport-apr-2.2.9.jar

实测回显(lib,第三方依赖):

commons-collections4-4.5.0.jar
commons-logging-1.1.1.jar
javassist-3.30.2-GA.jar
jcl-over-slf4j-1.7.36.jar
jspecify-1.0.0.jar
jzlib-1.1.3.jar
micrometer-commons-1.16.5.jar
micrometer-observation-1.16.5.jar
ognl-3.4.11.jar
permit-reflect-0.4.jar
slf4j-api-1.7.36.jar
spring-2.5.6.SEC03.jar
spring-aop-7.0.7.jar
spring-beans-7.0.7.jar
spring-context-7.0.7.jar
spring-core-7.0.7.jar
spring-expression-7.0.7.jar
tomcat-jni-10.0.27.jar
xbean-spring-4.30.jar

核心库体积与类数量(实测):

ls -lh /opt/mina/apache-mina-2.2.9/dist/mina-core-2.2.9.jar
jar tf /opt/mina/apache-mina-2.2.9/dist/mina-core-2.2.9.jar | wc -l

实测回显:

693K /opt/mina/apache-mina-2.2.9/dist/mina-core-2.2.9.jar
526

💡 说明:dist/ 为 MINA 各功能组件 jar(core、example、http、statemachine、apr 传输、各集成模块等),lib/ 为运行期第三方依赖(slf4j、spring、ognl 等)。各组件职责与 API 详见《Apache MINA 2.2.9 常用工具与 API 详解》篇。

4.5 方案 B:Maven 依赖引入(官方推荐)

MINA 官方推荐通过 Maven 引入依赖,便于版本统一与传递依赖管理。新建工程 pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0">
    <modelVersion>4.0.0</modelVersion>
    <groupId>demo</groupId>
    <artifactId>mina-demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.apache.mina</groupId>
            <artifactId>mina-core</artifactId>
            <version>2.2.9</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.36</version>
        </dependency>
    </dependencies>
</project>

编译验证:

mkdir -p /root/mina-demo/src/main/java/demo
cd /root/mina-demo
mvn -q clean compile

⚠️ 说明:-q 静默模式下编译成功无多余输出(等价 BUILD SUCCESS、退出码 0);该 Maven 编译回显未包含在证据采集中,此处按标准行为说明。Maven 首次构建需联网拉取 mina-core 与传递依赖。

五、配置说明

MINA 作为 SDK 库,核心配置通过 Java API 完成(IoAcceptor/IoConnector 服务参数、IoSessionConfig 会话参数、过滤器链编解码等),没有服务端配置文件。关键点:

  • 日志:MINA 通过 slf4j 输出日志,lib/ 已含 slf4j-api-1.7.36.jar;实际运行需再引入一个 slf4j 绑定实现(如 slf4j-simple 或 logback)。
  • JVM 内存:示例/生产 Java 进程建议将堆内存限制在 256–512MB(-Xms256m -Xmx512m),避免默认大堆。
  • 依赖一致性:多组件混用时,所有 mina-* 组件版本必须一致(同为 2.2.9)。

详细参数与生产模板见《Apache MINA 2.2.9 配置参数详解》篇;API 用法速查见《Apache MINA 2.2.9 常用工具与 API 详解》篇。

六、注意事项

⚠️ 注意:

  1. 发行包仅为 jar 库,无独立可执行服务;服务端口由应用自行绑定。
  2. 手工 classpath 场景必须把 dist/ 与 lib/ 全部加入 classpath,只加 dist/ 会因缺 slf4j 等依赖抛出 NoClassDefFoundError。
  3. JDK 17 满足 MINA 2.2.x(Java 8 基线);无需切换到更高 JDK。
  4. slf4j-api 与 slf4j 绑定实现版本建议一致(发行包内为 1.7.36)。

七、常见问题

Q1:wget 下载慢或失败? 可换用 Apache 归档地址 https://archive.apache.org/dist/mina/mina/2.2.9/ 或国内镜像,下载后务必按 4.2 校验 SHA-512。

Q2:sha512sum 校验不一致? 说明下载损坏或文件残留不完整。删除本地文件后重新下载再校验,不要使用断点续传的残留文件。

Q3:编译报 package org.apache.mina does not exist? classpath 未包含 mina-core jar(方案 A),或 pom.xml 未配置 org.apache.mina:mina-core:2.2.9 依赖(方案 B)。

Q4:运行时报 SLF4J 警告(No SLF4J providers were found)? 缺少 slf4j 绑定实现。按 4.5 在 pom 中引入 slf4j-simple:1.7.36,或手工 classpath 时加入对应后端 jar。

八、卸载方式

移除发行包与演示工程、Maven 本地缓存:

rm -rf /opt/mina
rm -rf /root/mina-demo
rm -rf ~/.m2/repository/org/apache/mina

如需同时移除 JDK 与 Maven:

sudo apt-get remove -y openjdk-17-jdk-headless maven
sudo apt-get autoremove -y

九、参考链接

  • Apache MINA 官方下载目录:https://dlcdn.apache.org/mina/mina/
  • Apache MINA 官方文档:https://mina.apache.org/
  • Maven Central mina-core 页面:https://repo.maven.apache.org/maven2/org/apache/mina/mina-core/