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 两种方案、依赖树核对、编译验证与卸载,全程实测。
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~M4 | 2.x 里程碑预发布版 | 新特性评估、试用 | 勿用于生产 |
本文选定:org.apache.pekko:pekko-actor_2.13:1.7.1(Scala 2.13 构建,Java 用户官方推荐路径)。
3.3 Scala 二进制变体选择
| Artifact | 适用对象 | 说明 |
|---|---|---|
| pekko-actor_2.13 | Java 用户、Scala 2.13 项目 | 官方推荐路径,文档与示例最全 |
| pekko-actor_2.12 | 旧 Scala 2.12 技术栈 | 用于旧栈兼容 |
| pekko-actor_3 | Scala 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 详解》篇。
七、注意事项
⚠️ 注意:
- JDK 版本:Pekko 1.7.x 要求 JDK 8+(本文实测 JDK 17.0.20.1 编译运行正常;JDK 21 亦受支持)。
- 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。- Scala 变体:
_2.13后缀不可省略;Java 用户推荐_2.13(文档与示例最全),_2.12用于旧栈兼容,_3面向 Scala 3。- 版本策略:2.0.0-M1~M4 为里程碑预发布版,生产锁定稳定版 1.7.x。
- 中文输出:无 UTF-8 locale 的系统上中文 println 会显示为
????,需-Dfile.encoding=UTF-8与C.UTF-8locale。- 构建工具:官方文档以 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/