Ubuntu 22.04 安装 Apache Commons Validator 指南
在 Ubuntu 22.04 上通过 apt 加 Maven 或官方二进制包两种方式安装 Apache Commons Validator 1.11.0 并完成最小验证的实操指南
Ubuntu 22.04 安装 Apache Commons Validator 指南
目标:在 Ubuntu 22.04 服务器上完成 Apache Commons Validator 1.11.0 的安装与最小验证工程落地,已在 Ubuntu 22.04(x86_64)+ OpenJDK 17.0.20.1 环境实测通过。
一、环境信息
- 操作系统:Ubuntu 22.04.5 LTS
- 架构:x86_64
- JDK:OpenJDK 17.0.20.1(apt 仓库 openjdk-17-jdk)
- 构建工具:Apache Maven 3.6.3(apt 仓库 maven)
- 组件版本:Apache Commons Validator 1.11.0(2026-07-31 发布,1.x 系列最新稳定版)
- Maven 坐标:
commons-validator:commons-validator:1.11.0 - 工作目录:
/work(示例工程位于/work/hellocheck,二进制包解压于/work/commons-validator-1.11.0)
二、前置条件
- 一台 Ubuntu 22.04 服务器,具备 root 或 sudo 权限;
- 服务器可访问
archive.ubuntu.com(系统软件源)、repo1.maven.org(Maven 中央仓库)与downloads.apache.org(Apache 官方发布目录); - 磁盘剩余空间不少于 1 GB(JDK 与 Maven 安装约 500 MB,Maven 本地仓库约 300 MB);
- 熟悉基本的 shell 操作。
三、版本选型说明
3.1 为什么是 1.11.0
访问官方发布目录即可看到当前最新的 1.x 稳定版目录与文件(2026-07-31 发布):
$ curl -s https://downloads.apache.org/commons/validator/
binaries/ 2026-07-31 12:16
source/ 2026-07-31 12:16
RELEASE-NOTES.txt 2026-07-31 12:15 27K
$ curl -s https://downloads.apache.org/commons/validator/binaries/
commons-validator-1.11.0-bin.tar.gz 2026-07-31 12:15 2.8M
commons-validator-1.11.0-bin.tar.gz.asc 2026-07-31 12:15 265
commons-validator-1.11.0-bin.tar.gz.sha512 2026-07-31 12:15 129
commons-validator-1.11.0-bin.zip 2026-07-31 12:15 3.2M
commons-validator-1.11.0-bin.zip.asc 2026-07-31 12:15 265
commons-validator-1.11.0-bin.zip.sha512 2026-07-31 12:15 129
官方 RELEASE-NOTES 开头明确写道:Apache Commons Validator 1.11.0 RELEASE NOTES ... This is a feature and maintenance release. Java 8 or later is required.,即 1.11.0 要求 Java 8 及以上,JDK 17 完全兼容,本文以 JDK 17 运行实测。
💡 技术拓展:JDK 版本如何选择?
| JDK | 要求 | 适用场景 | 本文是否采用 |
|---|---|---|---|
| OpenJDK 8 | 1.11.0 的最低要求 | 老系统兼容,编译时需把 maven.compiler.source 降为 8 | 否 |
| OpenJDK 11 | 满足要求 | 过渡期生产环境常见选择 | 否 |
| OpenJDK 17 | 满足要求,LTS | 当前主流 LTS,apt 可直接安装 | 是(实测) |
| OpenJDK 21+ | 满足要求 | 新项目可选 | 否 |
本文所用版本为 1.11.0 + OpenJDK 17。
3.2 Maven 坐标核对
注意 Commons Validator 与其他 Commons 组件不同,其 groupId 就是 commons-validator(而不是 org.apache.commons)。中央仓库实测目录列表如下,最新目录为 1.11.0/:
$ curl -s https://repo1.maven.org/maven2/commons-validator/commons-validator/ | grep -oE 'href="[0-9][^"]*/"' | tail -12
href="1.11.0/"
href="1.2.0/"
href="1.3.0/"
href="1.3.1/"
href="1.4.0/"
href="1.4.1/"
href="1.5.0/"
href="1.5.1/"
href="1.6/"
href="1.7/"
href="1.8.0/"
href="1.9.0/"
该坐标在 1.11.0 下会自动带入四个编译期依赖(commons-beanutils 1.11.0、commons-digester 2.1、commons-logging 1.4.0、commons-collections 3.2.2),其中 digester 与 logging 主要服务于旧式 XML 规则配置方式,后文会展开。
3.3 安装方案总览
| 方案 | 依赖获取方式 | 需要安装的系统组件 | 适用场景 |
|---|---|---|---|
| 方案 A | Maven 中央仓库 | openjdk-17-jdk、maven | 日常开发与持续集成,推荐 |
| 方案 B | 官方 bin 二进制包 | openjdk-17-jdk(javac/java 即可) | 无法直连 Maven 仓库、仅需运行环境 |
两个方案互不冲突,可同时安装;本文均给出实测全过程。
四、安装方案 A:apt 安装 JDK 与 Maven,通过 Maven 依赖使用
4.1 更新软件源并安装
# apt-get update
输出节选(实测首尾):
Get:15 http://archive.ubuntu.com/ubuntu jammy-backports/universe amd64 Packages [35.6 kB]
Get:16 http://security.ubuntu.com/ubuntu jammy-security/multiverse amd64 Packages [96.8 kB]
Get:17 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages [4429 kB]
Get:18 http://security.ubuntu.com/ubuntu jammy-security/universe amd64 Packages [1323 kB]
Fetched 49.0 MB in 6s (7807 kB/s)
Reading package lists...
安装 JDK 17 与 Maven:
# DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-17-jdk maven
输出节选(实测末尾):
Processing triggers for ca-certificates (20260601~22.04.1) ...
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
done.
Processing triggers for libgdk-pixbuf-2.0-0:amd64 (2.42.8+dfsg-1ubuntu0.5) ...
4.2 验证安装结果
$ java -version
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)
$ javac -version
javac 17.0.20.1
$ mvn -version | head -4
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
要点提示:Ubuntu 打包的 Maven 3.6.3 已自动使用刚安装的 JDK 17(Java version: 17.0.20.1 一行),无需手工配置 JAVA_HOME。platform encoding: ANSI_X3.4-1968 表示系统未启用 UTF-8 区域,处理中文数据时建议按第七节配置说明设置编码。
4.3 创建最小验证工程
# mkdir -p /work/hellocheck/src/main/java
/work/hellocheck/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>hellocheck</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
<version>1.11.0</version>
</dependency>
</dependencies>
<build>
<finalName>hellocheck</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.5.1</version>
<executions>
<execution>
<phase>package</phase>
<goals><goal>shade</goal></goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>HelloValidator</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
/work/hellocheck/src/main/java/HelloValidator.java:
import org.apache.commons.validator.routines.EmailValidator;
import org.apache.commons.validator.routines.InetAddressValidator;
import org.apache.commons.validator.routines.checkdigit.LuhnCheckDigit;
public class HelloValidator {
public static void main(String[] args) {
System.out.println("EmailValidator.isValid(user@example.com) = "
+ EmailValidator.getInstance().isValid("user@example.com"));
System.out.println("EmailValidator.isValid(bad@@example.com) = "
+ EmailValidator.getInstance().isValid("bad@@example.com"));
System.out.println("InetAddressValidator.isValidInet4Address(192.168.1.10) = "
+ InetAddressValidator.getInstance().isValidInet4Address("192.168.1.10"));
System.out.println("InetAddressValidator.isValidInet6Address(2001:db8::1) = "
+ InetAddressValidator.getInstance().isValidInet6Address("2001:db8::1"));
System.out.println("LuhnCheckDigit.isValid(4417123456789113) = "
+ LuhnCheckDigit.LUHN_CHECK_DIGIT.isValid("4417123456789113"));
}
}
4.4 构建并运行
# cd /work/hellocheck && mvn -B package
输出节选(实测末尾):
[WARNING] mvn dependency:tree -Ddetail=true and the above output.
[WARNING] See https://maven.apache.org/plugins/maven-shade-plugin/
[INFO] Replacing original artifact with shaded artifact.
[INFO] Replacing /work/hellocheck/target/hellocheck.jar with /work/hellocheck/target/hellocheck-1.0.0-shaded.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 05:24 min
[INFO] Finished at: 2026-10-15T01:18:52Z
[INFO] ------------------------------------------------------------------------
首次构建耗时 5 分 24 秒,主要花在从中央仓库下载依赖与插件;二次构建利用本地缓存通常在 10 秒级。shade 插件产生的 WARNING 属于commons-logging 多版本资源合并提示,不影响运行。
# java -jar /work/hellocheck/target/hellocheck.jar
EmailValidator.isValid(user@example.com) = true
EmailValidator.isValid(bad@@example.com) = false
InetAddressValidator.isValidInet4Address(192.168.1.10) = true
InetAddressValidator.isValidInet6Address(2001:db8::1) = true
LuhnCheckDigit.isValid(4417123456789113) = true
验证结果:五个断言全部符合预期——合法邮箱、非法邮箱、IPv4、IPv6 地址与 Luhn 信用卡号校验均工作正常,方案 A 落地完成。
五、安装方案 B:官方二进制包 + javac/java 直跑
5.1 下载并校验
# cd /work
# curl -sO https://downloads.apache.org/commons/validator/binaries/commons-validator-1.11.0-bin.tar.gz
# curl -sO https://downloads.apache.org/commons/validator/binaries/commons-validator-1.11.0-bin.tar.gz.sha512
# ls -l commons-validator-1.11.0-bin.tar.gz
-rw-r--r-- 1 root root 2948421 Oct 15 01:33 commons-validator-1.11.0-bin.tar.gz
官方 .sha512 文件只有一行裸哈希(不含文件名列),直接 sha512sum -c 会报格式错误,需自行拼接成标准格式:
# cat commons-validator-1.11.0-bin.tar.gz.sha512
de5b755fe96916208bf38d608940d1a258c01964b21e72fae4cd892c8a3f8cb9699778857d59492cccbe985fe7b068c0968ece5777927812fd9cd4d13da2fa4c
# echo 'de5b755fe96916208bf38d608940d1a258c01964b21e72fae4cd892c8a3f8cb9699778857d59492cccbe985fe7b068c0968ece5777927812fd9cd4d13da2fa4c commons-validator-1.11.0-bin.tar.gz' > check.sha512
# sha512sum -c check.sha512
commons-validator-1.11.0-bin.tar.gz: OK
5.2 解压与目录结构
# tar xzf commons-validator-1.11.0-bin.tar.gz
# ls commons-validator-1.11.0/
LICENSE.txt
NOTICE.txt
README.md
RELEASE-NOTES.txt
apidocs
commons-validator-1.11.0-javadoc.jar
commons-validator-1.11.0-sources.jar
commons-validator-1.11.0-test-sources.jar
commons-validator-1.11.0-tests.jar
commons-validator-1.11.0.jar
核心运行时 jar 即 commons-validator-1.11.0.jar;apidocs 与 javadoc/sources 包为离线文档资料。
5.3 编译运行
把 4.3 节的 HelloValidator.java 拷入解压目录,直接用 javac 编译、java 运行:
# cd /work/commons-validator-1.11.0
# javac -cp commons-validator-1.11.0.jar HelloValidator.java
# java -cp .:commons-validator-1.11.0.jar HelloValidator
EmailValidator.isValid(user@example.com) = true
EmailValidator.isValid(bad@@example.com) = false
InetAddressValidator.isValidInet4Address(192.168.1.10) = true
InetAddressValidator.isValidInet6Address(2001:db8::1) = true
LuhnCheckDigit.isValid(4417123456789113) = true
验证结果:方案 B 无需 Maven,一个主 jar 加上系统 JDK 即可完成编译与运行。
要点提示:示例用到的 EmailValidator、InetAddressValidator、LuhnCheckDigit 等现代校验器全部位于组件主 jar 内,不依赖其他 jar。但如果使用旧式 XML 规则配置方式(ValidatorResources 解析 validation.xml),则需要额外准备 commons-beanutils、commons-digester、commons-logging、commons-collections 四个 jar 并加入 classpath,这一依赖组合在 3.2 节的 POM 依赖说明中已列出。
六、方案对比与选择建议
| 对比项 | 方案 A(Maven 依赖) | 方案 B(官方 bin 包) |
|---|---|---|
| 依赖管理 | 自动解析四个传递依赖,升级只改版本号 | 手工下载,XML 方式需自备 4 个附加 jar |
| 构建集成 | 直接接入 mvn package/IDE | 需手工维护 classpath |
| 首次成本 | apt 安装约 1~2 分钟,构建 5 分钟量级 | 下载 2.8 MB,秒级 |
| 可复现性 | 坐标固定,锁定版本容易 | 需自行保管 jar 与校验文件 |
| 适用对象 | 应用开发团队(推荐) | 无 Maven 环境、离线机器、快速验证 |
选择建议:凡是有 Maven 或 Gradle 的项目一律走方案 A;方案 B 适合作为内网/离线机器的兜底路径,或在排查问题时用最小 classpath 隔离验证。
七、配置说明
- 组件本身没有任何运行时配置文件,所有行为通过构造参数与代码开关控制,可参考本专栏《Apache Commons Validator 1.11.0 配置参数详解》。
- 编码:4.2 节实测
platform encoding: ANSI_X3.4-1968,含中文输入输出时建议统一执行export LANG=C.UTF-8,或在mvn命令与java -jar命令中显式加-Dfile.encoding=UTF-8。 - 代理:内网环境如需经代理访问中央仓库,在
~/.m2/settings.xml的<proxies>段配置,而不是依赖http_proxy环境变量(Maven 的 JVM 不会读取该变量)。 - 离线缓存:构建一次后,
~/.m2/repository即成为本地缓存,可在内网机器间直接拷贝复用。
八、常见问题(FAQ)
1. mvn package 卡在下载依赖。
中央仓库直连慢时,在 ~/.m2/settings.xml 中配置镜像(如国内镜像站),或为公司内网配置 <proxies>。
2. 编译报错 invalid source release: 17。
说明实际使用的 JDK 低于 17。确认 mvn -version 的 Java version 行;若是 JDK 8/11,将 POM 中 maven.compiler.source/maven.compiler.target 改为对应版本(Commons Validator 1.11.0 本身只要求 Java 8)。
3. 控制台中文乱码。
见第七节编码配置;实测 java -Dfile.encoding=UTF-8 -jar hellocheck.jar 即可输出正常。
4. sha512sum -c 报 no properly formatted SHA512 checksum lines found。
官方 .sha512 是裸哈希格式,按 5.1 节拼接 哈希 文件名 两列后再校验。
5. 运行 XML 规则配置程序抛 NoClassDefFoundError: org/apache/commons/digester/Digester。
XML 方式依赖 commons-digester/commons-logging/commons-beanutils/commons-collections,方案 B 用户需手工补齐这四个 jar;方案 A 用户由 Maven 自动带入。
6. 如何只升级组件版本? 方案 A 中仅修改 POM 依赖版本并重新构建;方案 B 需重新下载对应版本的 bin 包并替换 classpath 中的 jar。
九、卸载与清理
# rm -rf /work/hellocheck /work/commons-validator-1.11.0 /work/commons-validator-1.11.0-bin.tar.gz /work/check.sha512
# DEBIAN_FRONTEND=noninteractive apt-get remove --purge -y maven openjdk-17-jdk
# apt-get autoremove -y
# rm -rf ~/.m2
输出节选(实测末尾,autoremove 后显示):
Processing triggers for libc-bin (2.35-0ubuntu3.11) ...
执行后 java -version 与 mvn -version 均提示 command not found,系统恢复至初始状态。
十、参考链接
- Apache Commons Validator 官方主页:https://commons.apache.org/proper/commons-validator/
- 官方下载目录:https://downloads.apache.org/commons/validator/
- 1.11.0 Release Notes:https://downloads.apache.org/commons/validator/RELEASE-NOTES.txt
- Maven 中央仓库坐标:https://repo1.maven.org/maven2/commons-validator/commons-validator/
- Java API 文档(1.11.0):https://commons.apache.org/proper/commons-validator/apidocs/index.html
- 用户指南:https://commons.apache.org/proper/commons-validator/userguide/index.html