Ubuntu 22.04 安装 Apache Pekko 1.7.1 指南

Ubuntu 22.04 安装 Apache Pekko 1.7.1(Java Actor 并发工具库 SDK)指南:JDK 17 与 Maven 环境准备、1.7.1 稳定版与 2.0.0-M4 里程碑选型对照、Scala 2.12/2.13/3 变体选择、Maven 依赖引入与直接使用 jar 两种方案、依赖树核对、编译验证与卸载,全程实测。

Apache PekkoApache Pekko2026/10/11

Ubuntu 22.04 安装 Apache Pekko 1.7.1 指南

目标:在 Ubuntu 22.04 服务器上完成 Apache Pekko 1.7.1(Java/Scala Actor 并发编程工具库,以 Maven 依赖或 jar 引入形态提供,非独立服务)的安装与验证。本文给出 JDK 17 + Maven 环境准备、1.7.1 稳定版与 2.0.0-M4 里程碑版选型对照、Scala 二进制变体选择、Maven 依赖引入与「直接使用 jar 包」两种安装方案,以及依赖树核对、编译验证与卸载方式。所有命令与回显均在 Ubuntu 22.04.5 + JDK 17 环境实测通过。

一、环境信息

  • 操作系统:Ubuntu 22.04.5 LTS
  • 登录用户:root(演示账号)
  • Java:OpenJDK 17.0.20.1(openjdk-17-jdk-headless,Ubuntu 官方源)
  • 构建工具:Apache Maven 3.6.3(Ubuntu 官方源)
  • 下载工具:GNU Wget 1.21.2
  • Pekko 版本:1.7.1(当前最新稳定版,2026-10-03 发布;artifact:org.apache.pekko:pekko-actor_2.13)
  • 示例工程目录:/opt/pekko-demo/

💡 说明:Apache Pekko 是 Apache 软件基金会维护的 Actor 并发与分布式工具库(包名 org.apache.pekko.*,Apache 2.0 许可,Lightbend Akka 改用商业许可后的社区分叉替代品),以 jar 库形态发布,本身没有可执行守护进程或服务端口。所谓「安装」,本质是准备好 JDK 与构建环境,并把 Pekko 的 jar 以依赖或 classpath 方式引入到你的 Java/Scala 工程。

二、前置条件

2.1 更新软件源并安装 JDK 17 与 Maven

apt-get update && apt-get install -y openjdk-17-jdk-headless maven wget

Pekko 1.7.x 要求 JDK 8 及以上(JDK 21 亦受支持),本文按 Ubuntu 22.04 官方源的 JDK 17 实测。

2.2 验证 JDK、Maven 与 Wget

java -version
mvn -version | head -3
wget --version | head -1

实测回显:

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
GNU Wget 1.21.2 built on linux-gnu.

三、版本选型说明

3.1 Maven Central 元数据探测

查询 Maven Central 元数据 https://repo1.maven.org/maven2/org/apache/pekko/pekko-actor_2.13/maven-metadata.xml(_2.12、_3 变体同理),三个 Scala 变体的 <latest> 与 <release> 字段实测如下:

$ # pekko-actor_2.13
<latest>2.0.0-M4</latest>   <release>2.0.0-M4</release>
$ # pekko-actor_2.12
<latest>1.7.1</latest>      <release>1.7.1</release>
$ # pekko-actor_3
<latest>2.0.0-M4</latest>   <release>2.0.0-M4</release>

3.2 Apache 官方下载目录

Apache 官方下载目录 https://dlcdn.apache.org/pekko/ 显示的发行版:

1.7.1/      2026-10-03 18:58    # 最新稳定版
2.0.0-M4/   2026-08-21 19:21    # 2.x 里程碑(预发布)

版本结论对照表:

版本性质适用场景结论
1.7.1稳定版(2026-10-03 发布,2.12 / 2.13 / 3 三个 Scala 变体均有)生产环境生产使用
2.0.0-M1~M42.x 里程碑预发布版新特性评估、试用勿用于生产

本文选定:org.apache.pekko:pekko-actor_2.13:1.7.1(Scala 2.13 构建,Java 用户官方推荐路径)。

3.3 Scala 二进制变体选择

Artifact适用对象说明
pekko-actor_2.13Java 用户、Scala 2.13 项目官方推荐路径,文档与示例最全
pekko-actor_2.12旧 Scala 2.12 技术栈用于旧栈兼容
pekko-actor_3Scala 3 项目面向 Scala 3 用户

⚠️ 注意:Pekko 的 artifact 名带 Scala 二进制版本后缀(如 _2.13),引入依赖时不可省略,且同一工程内所有 pekko-* 模块必须使用同一后缀与同一版本号。

四、方案 A:Maven 项目依赖引入(官方推荐)

Pekko 官方推荐通过 Maven/Gradle/sbt 以依赖方式引入,便于统一版本与传递依赖管理。本方案从零创建一个 Maven 工程并验证 pekko-actor 1.7.1 可用。

4.1 创建 Maven 工程

mkdir -p /opt/pekko-demo
cd /opt/pekko-demo
mkdir -p src/main/java

4.2 编写 pom.xml 引入 pekko-actor 1.7.1

创建 /opt/pekko-demo/pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>pekko-demo</artifactId>
  <version>1.0</version>
  <packaging>jar</packaging>
  <name>Apache Pekko Actor Demo (Java)</name>

  <properties>
    <maven.compiler.release>17</maven.compiler.release>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <pekko.version>1.7.1</pekko.version>
  </properties>

  <dependencies>
    <!-- Pekko 核心 actor(Scala 2.13 构建) -->
    <dependency>
      <groupId>org.apache.pekko</groupId>
      <artifactId>pekko-actor_2.13</artifactId>
      <version>${pekko.version}</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.11.0</version>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>3.1.0</version>
        <configuration>
          <mainClass>GreeterMain</mainClass>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

⚠️ 注意:Ubuntu 22.04 自带的 Maven 3.6.3 默认解析到 maven-compiler-plugin 3.1,不支持 maven.compiler.release 属性,必须像上面这样显式声明 3.11.0(或更高)版本的 compiler 插件,否则编译报 Source option 5 is no longer supported。exec-maven-plugin 3.1.0 用于直接运行主类,运行示例详见《Apache Pekko 1.7.1 构建并运行示例应用指南》篇。

4.3 编译并核对依赖树

cd /opt/pekko-demo && mvn -q clean compile

实测:首次编译会下载 pekko-actor 1.7.1、scala-library 2.13.18、typesafe config 等依赖;命令无输出即编译成功,生成 target/classes/GreeterMain*.class。

查看实际解析出的依赖树:

mvn dependency:tree

实测回显(依赖树部分):

\- org.apache.pekko:pekko-actor_2.13:jar:1.7.1:compile
   +- org.scala-lang:scala-library:jar:2.13.18:compile
   \- com.typesafe:config:jar:1.4.9:compile

💡 说明:pekko-actor_2.13:1.7.1 仅传递依赖 scala-library 2.13.18 与 com.typesafe:config 1.4.9,十分轻量。后续按需追加 pekko-remote、pekko-cluster、pekko-stream、pekko-http 等模块时,版本号统一保持 1.7.1。

五、方案 B:直接使用 jar 包(离线 / 无 Maven 场景)

⚠️ 前置说明:本方案的 jar 清单由方案 A 实测解析出的依赖树(pekko-actor_2.13:jar:1.7.1 + scala-library:2.13.18 + config:1.4.9)推导而来,文件名遵循 Maven Central「artifactId-version.jar」标准命名;实测环境未单独跑通本方案逐条 wget 命令,落地时请以仓库实际目录为准。

5.1 下载核心 jar

mkdir -p /opt/pekko/lib
cd /opt/pekko/lib
wget -q https://repo1.maven.org/maven2/org/apache/pekko/pekko-actor_2.13/1.7.1/pekko-actor_2.13-1.7.1.jar
wget -q https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.18/scala-library-2.13.18.jar
wget -q https://repo1.maven.org/maven2/com/typesafe/config/1.4.9/config-1.4.9.jar

💡 说明:pekko-actor 运行期必须同时携带 scala-library 与 typesafe config 两个 jar,缺一会在运行时报 NoClassDefFoundError。

5.2 通过 classpath 编译运行

将 jar 目录加入 CLASSPATH 后,即可编译运行依赖 Pekko 的 Java 类(以 /opt/pekko-demo/src/main/java/GreeterMain.java 为例,源码全文见《Apache Pekko 1.7.1 构建并运行示例应用指南》篇):

export CLASSPATH=/opt/pekko/lib/*:$CLASSPATH
javac -encoding UTF-8 -d /opt/pekko/classes /opt/pekko-demo/src/main/java/GreeterMain.java
java -cp "/opt/pekko/classes:/opt/pekko/lib/*" GreeterMain

六、配置说明

Pekko 作为 SDK 库没有传统的服务端配置文件,安装阶段涉及的配置集中在工程与环境两层:

  • 依赖版本:所有 pekko-* 模块统一到 1.7.1(版本号集中定义在 pom 的 <pekko.version> 属性)。
  • 编译目标:maven.compiler.release 设为服务器 JDK 大版本(本文 17),并显式声明 maven-compiler-plugin 3.11.0。
  • JVM 堆内存:运行示例进程时把堆限制在 256–512MB,例如 export MAVEN_OPTS="-Xms256m -Xmx512m"。
  • 编码与 locale:系统 locale 为 POSIX 时中文输出会变成 ????,需设置 JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8" 与 LANG=C.UTF-8、LC_ALL=C.UTF-8。
  • 依赖缓存:Maven 本地仓库默认在 ~/.m2/repository/,删除后下次编译会重新下载。
  • 升级 / 降级 / 多版本:修改 pom 中 <pekko.version> 后重新 mvn clean compile 即可切换版本;本地仓库按「artifact/版本目录」隔离(如 ~/.m2/repository/org/apache/pekko/pekko-actor_2.13/1.7.1/),多版本天然共存;回退只需把版本属性改回旧值重新编译。

框架层参数(application.conf 与 JVM 参数)的完整含义与生产模板见《Apache Pekko 1.7.1 配置参数详解》篇;API 用法速查见《Apache Pekko 1.7.1 常用工具与 API 详解》篇。

七、注意事项

⚠️ 注意:

  1. JDK 版本:Pekko 1.7.x 要求 JDK 8+(本文实测 JDK 17.0.20.1 编译运行正常;JDK 21 亦受支持)。
  2. Maven 插件:Ubuntu 22.04 的 Maven 3.6.3 自带 maven-compiler-plugin 3.1,不支持 maven.compiler.release,必须显式升级到 3.11.0,否则报 Source option 5 is no longer supported。
  3. Scala 变体:_2.13 后缀不可省略;Java 用户推荐 _2.13(文档与示例最全),_2.12 用于旧栈兼容,_3 面向 Scala 3。
  4. 版本策略:2.0.0-M1~M4 为里程碑预发布版,生产锁定稳定版 1.7.x。
  5. 中文输出:无 UTF-8 locale 的系统上中文 println 会显示为 ????,需 -Dfile.encoding=UTF-8 与 C.UTF-8 locale。
  6. 构建工具:官方文档以 sbt 为主,但 Maven/Gradle 同样支持(本文用 Maven 3.6.3 + exec-maven-plugin 3.1.0),更贴近 Java 生态。

八、常见问题

Q1:mvn 编译报 Source option 5 is no longer supported? 原因:Maven 3.6.3 默认使用过旧的 maven-compiler-plugin 3.1,不认识 maven.compiler.release 属性。解决:按 4.2 节在 pom 的 <build><plugins> 中显式声明 maven-compiler-plugin 3.11.0。

Q2:仓库里最新版本是 2.0.0-M4,为什么不装它? 2.0.0-M1~M4 是 2.x 里程碑预发布版,API 可能变动,仅适合评估。生产环境应锁定稳定版 1.7.1(三个 Scala 变体均已发布)。

Q3:repo1.maven.org 不可达怎么办? 可将提前从任一 Maven Central 同步站下载好的 pekko-actor、scala-library、config 三个 jar 拷入 /opt/pekko/lib,按方案 B 的 classpath 方式引入。

Q4:运行示例时中文输出是 ????? 系统 locale 为 POSIX 所致。运行前执行:

export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8" LANG=C.UTF-8 LC_ALL=C.UTF-8

九、卸载方式

移除示例工程与方案 B 的 jar 目录,清理本地仓库中的 Pekko 构件:

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

如需连同 JDK 17 与 Maven 一起移除:

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

十、参考链接

  • Apache Pekko 官网与文档:https://pekko.apache.org/
  • Maven Central Pekko 目录:https://repo1.maven.org/maven2/org/apache/pekko/
  • Apache 官方下载目录:https://dlcdn.apache.org/pekko/
  • Apache 历史版本归档:https://archive.apache.org/dist/pekko/