Ubuntu 22.04 安装 Apache XMLBeans 指南
本指南在 Ubuntu 22.04.5 LTS 服务器上实测了 Apache XMLBeans 5.4.1 的两种引入方式(Maven 依赖与官方 jar 直用)及 scomp 编译器直调,全部命令与回显真实可复现。
Ubuntu 22.04 安装 Apache XMLBeans 指南
目标:在 Ubuntu 22.04.5 LTS 服务器上完成 Apache XMLBeans 5.4.1 的安装与验证,覆盖 Maven 依赖引入与官方 jar 直用两条路径,并以 scomp 编译器将示例 XSD 编译为 Java 类型 jar,实测通过。
一、环境信息
本文所有命令与回显均来自以下真实服务器环境,实测时间 2026-10-15:
# head -3 /etc/os-release
PRETTY_NAME="Ubuntu 22.04.5 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
# uname -m
x86_64
XMLBeans 是一个纯 Java 的 XML 绑定框架(把 XML 与 XSD 编译成强类型 Java 类),它不是常驻服务,安装即"让 Java 程序能使用其 jar"。因此验证标准为:java/javac/mvn 可用、依赖可解析、示例代码可编译运行。当前环境基线:
# java -version
openjdk version "17.0.20.1" 2026-08-18
OpenJDK Runtime Environment (build 17.0.20.1+1-1~22.04)
OpenJDK 64-Bit Server VM (build 17.0.20.1+1-1~22.04, mixed mode, sharing)
- 工作根目录:
/work(示例 XSD 与产物统一放在/work/schema、/work/mvn-demo) - 实测版本:Apache XMLBeans 5.4.1(Maven Central 最新 release)
- Maven 坐标:
org.apache.xmlbeans:xmlbeans:5.4.1
二、前置条件
- 具备 root 权限,能访问 Ubuntu 软件源;
- 服务器可访问 Maven Central(
repo1.maven.org),用于下载依赖与 jar:
# curl -sI https://repo1.maven.org/maven2/org/apache/xmlbeans/xmlbeans/ | head -1
HTTP/2 200
若未安装 curl,先补装:
# apt-get install -y curl
- 磁盘空间不低于 2 GB(JDK 17 + Maven + 本地仓库依赖约占 1 GB)。
三、版本选型说明
以 Maven Central 实际元数据为准(https://repo1.maven.org/maven2/org/apache/xmlbeans/xmlbeans/maven-metadata.xml):
<latest>5.4.1</latest>
<release>5.4.1</release>
<lastUpdated>20260923082850</lastUpdated>
版本列表从 2.2.0 一路演进到 5.4.1,主要发布线如下(可从同一元数据文件的 <versions> 段核实):
| 版本线 | 最后版本 | 特征 | 是否建议 |
|---|---|---|---|
| 2.x | 2.6.0 | 上世纪 XMLBeans 架构(2004~2012),JDK 5 时代 | 仅维护遗留系统 |
| 3.x | 3.1.0 | 独立为 Apache 项目后的过渡版本 | 不建议新项目 |
| 4.x | 4.0.0 | API 重构起点,基线 Java 8 | 存量升级过渡 |
| 5.x | 5.4.1 | 基线 Java 8(实测字节码 major=52)、日志改用 log4j-api | 推荐 |
💡 技术拓展:同为"XSD → Java 绑定"方案,与 JAXB(JDK 8 内置、JDK 11 后需外挂依赖)相比,XMLBeans 保留原始 XML 的完整游标访问能力(XmlCursor),且类型系统可运行期自省;与 DOM4j/JDOM 相比,XMLBeans 多了 Schema 编译期强类型。本文选 XMLBeans 5.4.1:JDK 8 与 17 双兼容(第七节实测),且仍在活跃维护。
本文实际采用 5.4.1,它对 JDK 的要求低至 Java 8(jar 内 org/apache/xmlbeans/XmlObject.class 字节码 major=52,实测确认),在 Ubuntu 默认的 OpenJDK 17 上直接可用。
四、方案 A:Maven 依赖安装(推荐)
4.1 方案说明
通过 Maven 坐标 org.apache.xmlbeans:xmlbeans:5.4.1 引入,Maven 会自动带上其编译期依赖 org.apache.logging.log4j:log4j-api(XMLBeans 5.x 的日志门面,实测传递依赖版本 2.26.1)。XPath/XQuery 完整能力所需的 Saxon-HE 在 5.4.1 的 POM 中是 provided 作用域,需要显式声明。
4.2 安装 JDK 17 与 Maven
# apt-get install -y openjdk-17-jdk maven
maven is already the newest version (3.6.3-5).
openjdk-17-jdk is already the newest version (17.0.20.1+1-1~22.04).
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
确认工具链版本:
# mvn -v
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"
注意
platform encoding: ANSI_X3.4-1968:这是 POSIX locale 导致的,处理中文 XML 时务必在运行参数里显式-Dfile.encoding=UTF-8(第七节)。
4.3 创建工程并引入依赖
# mkdir -p /work/mvn-demo/src/main/java/demo
# cd /work/mvn-demo
/work/mvn-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>demo</groupId>
<artifactId>xmlbeans-demo</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>17</maven.compiler.release>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>5.4.1</version>
</dependency>
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>Saxon-HE</artifactId>
<version>12.10</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
</plugin>
</plugins>
</build>
</project>
要点:显式固定 maven-compiler-plugin 3.11.0 并用 maven.compiler.release 指定目标版本,避免 Maven 3.6.3 默认的过老 compiler 插件(它不认识 --release 参数,会直接报 Fatal error compiling: invalid flag: --release)。
4.4 最小验证代码
/work/mvn-demo/src/main/java/demo/GenericDemo.java:
package demo;
import org.apache.xmlbeans.XmlObject;
import org.apache.xmlbeans.XmlOptions;
import javax.xml.namespace.QName;
import java.io.File;
public class GenericDemo {
static final String NS = "http://example.com/order";
static final QName Q_ORDER = new QName(NS, "order");
static final QName Q_CUSTOMER = new QName(NS, "customer");
static final QName Q_EMAIL = new QName(NS, "email");
static final QName Q_ID = new QName("", "id");
public static void main(String[] args) throws Exception {
XmlObject doc = XmlObject.Factory.parse(new File("/work/schema/order.xml"));
System.out.println("解析完成,schemaType = " + doc.schemaType());
XmlObject[] orders = doc.selectChildren(Q_ORDER);
System.out.println("selectChildren(order) 命中 = " + orders.length);
XmlObject order = orders[0];
XmlObject id = order.selectAttribute(Q_ID);
System.out.println("selectAttribute(id).getStringValue() = "
+ ((org.apache.xmlbeans.SimpleValue) id).getStringValue());
XmlObject email = order
.selectChildren(Q_CUSTOMER)[0]
.selectChildren(Q_EMAIL)[0];
System.out.println("customer/email 文本值 = "
+ ((org.apache.xmlbeans.SimpleValue) email).getStringValue());
String pretty = doc.xmlText(new XmlOptions().setSavePrettyPrint());
System.out.println("缩进序列化首行 = " + pretty.split("\n")[0]);
}
}
配套的示例 XML /work/schema/order.xml(与第五节 XSD 同源,此处直接给出):
<?xml version="1.0" encoding="UTF-8"?>
<ord:order xmlns:ord="http://example.com/order" id="A-2026-1015" date="2026-10-15">
<ord:customer vip="true">
<ord:name>张伟</ord:name>
<ord:email>zhangwei@example.com</ord:email>
</ord:customer>
<ord:item sku="SKU-1001" qty="2">
<ord:name>机械键盘</ord:name>
<ord:price>399.0</ord:price>
</ord:item>
</ord:order>
4.5 编译与运行验证
# cd /work/mvn-demo && mvn -q -B compile
# echo $?
0
查看依赖解析结果(确认 log4j-api 为 XMLBeans 的传递依赖):
# mvn -B clean dependency:tree
...
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ xmlbeans-demo ---
[INFO] demo:xmlbeans-demo:jar:1.0.0
[INFO] +- org.apache.xmlbeans:xmlbeans:jar:5.4.1:compile
[INFO] | \- org.apache.logging.log4j:log4j-api:jar:2.26.1:compile
[INFO] +- net.sf.saxon:Saxon-HE:jar:12.10:compile
[INFO] | \- org.xmlresolver:xmlresolver:jar:5.3.3:compile
[INFO] | \- org.xmlresolver:xmlresolver:data:jar:5.3.3:compile
[INFO] \- com.example:order-xmlbeans:jar:1.0.0:compile
...
[INFO] BUILD SUCCESS
运行:
# M2=~/.m2/repository
# java -Dfile.encoding=UTF-8 -cp target/classes:$M2/org/apache/xmlbeans/xmlbeans/5.4.1/xmlbeans-5.4.1.jar:$M2/org/apache/logging/log4j/log4j-api/2.26.1/log4j-api-2.26.1.jar demo.GenericDemo
解析完成,schemaType = N=
selectChildren(order) 命中 = 1
selectAttribute(id).getStringValue() = A-2026-1015
customer/email 文本值 = zhangwei@example.com
缩进序列化首行 = <?xml version="1.0" encoding="UTF-8"?>
验证通过:schemaType = N= 表示当前类路径上没有该文档的 Schema 类型系统(N = NoType),解析退化为通用 XmlObject,仍可按 QName 正确选取节点;执行 scomp 生成类型 jar 并加入类路径后,同一行会变成 D=order@http://example.com/order(详见《Apache XMLBeans 5.4.1 快速入门与集成示例》第四节实测)。
五、方案 B:官方 jar 直用与 scomp 直调(离线友好)
5.1 方案说明
5.x 已不再发布传统的 bin 分发包:官方下载目录 downloads.apache.org/xmlbeans/ 已下线(404),archive.apache.org/dist/xmlbeans/binaries/ 最新的二进制分发包停留在 2.6.0。因此 5.x 的"安装版"以 Maven Central 的 jar 为权威来源,scomp 编译器也内置在该 jar 中(主类 org.apache.xmlbeans.impl.tool.SchemaCompiler)。
💡 技术拓展:5.4.1 jar 内的
org.apache.xmlbeans.impl.tool.XMLBean是 Ant 任务类(继承org.apache.tools.ant.taskdefs.MatchingTask,实测无 main 方法),它不是命令行入口;命令行入口是同包的SchemaCompiler(实测带public static void main(String[]))。旧教程让读者去找bin/scomp脚本的做法对 5.x 已失效。
5.2 下载与校验
# mkdir -p /work && cd /work
# curl -sO https://repo1.maven.org/maven2/org/apache/xmlbeans/xmlbeans/5.4.1/xmlbeans-5.4.1.jar
# curl -sO https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-api/2.26.1/log4j-api-2.26.1.jar
# curl -sO https://repo1.maven.org/maven2/net/sf/saxon/Saxon-HE/12.10/Saxon-HE-12.10.jar
# ls -l xmlbeans-5.4.1.jar log4j-api-2.26.1.jar Saxon-HE-12.10.jar
-rw-r--r-- 1 root root 2227616 Oct 15 11:02 xmlbeans-5.4.1.jar
-rw-r--r-- 1 root root 351428 Oct 15 11:18 log4j-api-2.26.1.jar
-rw-r--r-- 1 root root 5793277 Oct 15 11:41 Saxon-HE-12.10.jar
# sha1sum xmlbeans-5.4.1.jar
7a7f86b1c0b4cf30081d0c99ec8f7303208d555e xmlbeans-5.4.1.jar
# curl -s https://repo1.maven.org/maven2/org/apache/xmlbeans/xmlbeans/5.4.1/xmlbeans-5.4.1.jar.sha1
7a7f86b1c0b4cf30081d0c99ec8f7303208d555e
三个文件的 SHA1 实测均与 Maven Central 官方 .sha1 一致:
| 文件 | SHA1 |
|---|---|
| xmlbeans-5.4.1.jar | 7a7f86b1c0b4cf30081d0c99ec8f7303208d555e |
| log4j-api-2.26.1.jar | b9864ed8d0c01f65f3b0bf70f1447e5cc1b49c24 |
| Saxon-HE-12.10.jar | 1d6492dbfa32ddb2cd432fa3fbb940bf8137a5d2 |
xmlbeans-5.4.1.jar 内含 scomp 与全部类型系统,无需再下载其它构件。
5.3 jar 直跑验证
# mkdir -p /root/jar-run && cd /root/jar-run
# cp /work/mvn-demo/src/main/java/demo/GenericDemo.java .
# javac -encoding UTF-8 -cp /work/xmlbeans-5.4.1.jar:/work/log4j-api-2.26.1.jar -d out GenericDemo.java
# echo $?
0
# java -Dfile.encoding=UTF-8 -cp out:/work/xmlbeans-5.4.1.jar:/work/log4j-api-2.26.1.jar demo.GenericDemo
解析完成,schemaType = N=
selectChildren(order) 命中 = 1
selectAttribute(id).getStringValue() = A-2026-1015
customer/email 文本值 = zhangwei@example.com
缩进序列化首行 = <?xml version="1.0" encoding="UTF-8"?>
注意类路径里必须带 log4j-api-2.26.1.jar,缺它时运行期直接 NoClassDefFoundError: org/apache/logging/log4j/Logger(第九节 FAQ 复现)。
5.4 scomp 直调:XSD → jar
以 /work/schema/order.xsd 为例:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ord="http://example.com/order"
targetNamespace="http://example.com/order"
elementFormDefault="qualified">
<xs:element name="order" type="ord:OrderType"/>
<xs:complexType name="OrderType">
<xs:sequence>
<xs:element name="customer" type="ord:CustomerType"/>
<xs:element name="item" type="ord:ItemType" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required"/>
<xs:attribute name="date" type="xs:date" use="required"/>
</xs:complexType>
<xs:complexType name="CustomerType">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="email" type="xs:string"/>
</xs:sequence>
<xs:attribute name="vip" type="xs:boolean" default="false"/>
</xs:complexType>
<xs:complexType name="ItemType">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="price" type="xs:double"/>
</xs:sequence>
<xs:attribute name="sku" type="xs:string" use="required"/>
<xs:attribute name="qty" type="xs:int" use="required"/>
</xs:complexType>
</xs:schema>
先看工具自述(确认这是 scomp 本体):
# cd /work
# java -cp xmlbeans-5.4.1.jar org.apache.xmlbeans.impl.tool.SchemaCompiler -help
Compiles a schema into XML Bean classes and metadata.
Usage: scomp [opts] [dirs]* [schema.xsd]* [service.wsdl]* [config.xsdconfig]*
Options include:
-cp [a;b;c] - classpath
-d [dir] - target binary directory for .class and .xsb files
-src [dir] - target directory for generated .java files
-srconly - do not compile .java files or jar the output.
-out [xmltypes.jar] - the name of the output jar
-name - the name of the schema type - defaults to autogenerated name
-dl - permit network downloads for imports and includes (default is off)
-noupa - do not enforce the unique particle attribution rule
-nopvr - do not enforce the particle valid (restriction) rule
-noann - ignore annotations
-novdoc - do not validate contents of <documentation>
-noext - ignore all extension (Pre/Post and Interface) found in .xsdconfig files
-compiler - path to external java compiler
-ms - initial memory for external java compiler (default '8m')
-mx - maximum memory for external java compiler (default '256m')
-debug - compile with debug symbols
-quiet - print fewer informational messages
-verbose - print more informational messages
-version - prints version information
-license - prints license information
-allowmdef "[ns] [ns] [ns]" - ignores multiple defs in given namespaces (use ##local for no-namespace)
-catalog [file] - catalog file for org.apache.xml.resolver.tools.CatalogResolver. (Note: needs resolver.jar from http://xml.apache.org/commons/components/resolver/index.html)
-partialMethods [list] - comma separated list of bean methods to be generated. Use "-" to negate and "ALL" for all.
processed left-to-right, e.g. "ALL,-GET_LIST" exclude java.util.List getters - see XmlOptions.BeanMethod
-repackage - repackage specification, e.g. "org.apache.xmlbeans.metadata:mypackage.metadata" to change the metadata directory
-copyann - copy schema annotations to javadoc (default false) - don't activate on untrusted schema sources!
-sourcecodeencoding [encodingName] - Generate Java source code with the specified encoding (ISO-8859-1 is the legacy default)
💡 技术拓展:网上旧资料(XMLBeans 2.x/3.x 时代)给出的
-help常含-javasource、-sxconly、-params、-extjars、-javaargs、-localCatalog等选项,5.4.1 实测已全部移除,传参即报Unrecognized option(详见《scomp 编译与进阶实战详解》3.1.4 节)。
编译:
# java -cp xmlbeans-5.4.1.jar:log4j-api-2.26.1.jar org.apache.xmlbeans.impl.tool.SchemaCompiler -out order-xmlbeans.jar schema/order.xsd
2026-10-15T11:17:29.533550840Z main ERROR Log4j API could not find a logging provider.
Time to build schema type system: 0.387 seconds
Time to generate code: 0.048 seconds
Time to compile code: 1.0 seconds
Compiled types to: order-xmlbeans.jar
# echo $?
0
(首行 log4j 提示是因为只装了日志门面 log4j-api、未装 log4j-core 实现,不影响编译结果;消除方式见第七节。)
验证产物:
# ls -l order-xmlbeans.jar
-rw-r--r-- 1 root root 24367 Oct 15 11:17 order-xmlbeans.jar
# jar tf order-xmlbeans.jar | head -8
com/
com/example/
com/example/order/
com/example/order/OrderType.class
com/example/order/OrderDocument.class
com/example/order/impl/
com/example/order/impl/ItemTypeImpl.class
com/example/order/impl/OrderDocumentImpl.class
# jar tf order-xmlbeans.jar | wc -l
52
命名空间 http://example.com/order 被映射为 Java 包 com.example.order,包含 OrderDocument、OrderType、CustomerType、ItemType 等强类型接口,scomp 的进阶用法详见《Apache XMLBeans 5.4.1 scomp 编译与进阶实战详解》。
六、方案对比与选择建议
| 维度 | 方案 A:Maven 依赖 | 方案 B:jar 直用 |
|---|---|---|
| 安装成本 | 一次 apt-get install maven,之后 mvn 全托管 | 手工下载 3~4 个 jar 并维护类路径 |
| 传递依赖 | 自动解析(log4j-api 2.26.1、xmlresolver 5.3.3) | 需手工补齐,缺一个就 NoClassDefFoundError |
| 版本升级 | 改 pom 版本号 | 重新下载替换 |
| 适用场景 | 任何有 Maven 的 Java 工程 | 无外网的构建机、CI 沙箱、教学演示 |
| 本文结论 | 生产首选 | 离线补充 |
七、配置说明
7.1 JDK 版本切换
Ubuntu 的 update-alternatives 管理默认 java。多 JDK 时建议在脚本里显式导出,避免隐性切换:
# echo $JAVA_HOME
# export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
# echo $JAVA_HOME
/usr/lib/jvm/java-17-openjdk-amd64
未导出 JAVA_HOME 时 mvn 也能运行(它回落到 PATH 中的 java),但混装多 JDK 时极易踩到"mvn 用了旧 JDK"的坑,所以工程脚本里始终显式设置。
7.2 日志与编码
运行期出现的 Log4j API could not find a logging provider. 表示只有日志 API、没有日志实现。生产环境补一个实现即可消除:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.26.1</version>
</dependency>
中文场景统一在 JVM 参数加 -Dfile.encoding=UTF-8(源文件用 javac -encoding UTF-8),否则在 ANSI_X3.4-1968 平台编码下中文会变问号——这是本文环境的真实默认值(见 4.2 节 mvn -v 输出)。
八、多版本管理
Maven 本地仓库按版本目录隔离多版本,互不干扰。演示拉一个历史版本共存:
# cd /work/mvn-demo
# mvn -q -B dependency:get -Dartifact=org.apache.xmlbeans:xmlbeans:2.6.0
# echo $?
0
# ls -1 ~/.m2/repository/org/apache/xmlbeans/xmlbeans/
2.6.0
5.4.1
切换版本只需改 pom 中 <version>(如改回 2.6.0 后 mvn clean compile 重新解析)。注意 2.6.0 与 5.x 的 API 有代差(如 XmlObject.getStringValue() 在 5.x 已不存在,见第九节),不建议在同一工程内混用两个版本线。
九、常见问题(FAQ)
Q1:运行时报 NoClassDefFoundError: org/apache/logging/log4j/Logger。
5.x 的 jar 必须搭配 log4j-api。jar 直用时漏带它就会复现。实测复现与修复:
# java -cp xmlbeans-5.4.1.jar org.apache.xmlbeans.impl.tool.SchemaCompiler -out bad.jar schema/order.xsd
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/Logger
at org.apache.xmlbeans.impl.common.XBeanDebug.<clinit>(XBeanDebug.java:126)
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.Logger
... 1 more
# java -cp xmlbeans-5.4.1.jar:log4j-api-2.26.1.jar org.apache.xmlbeans.impl.tool.SchemaCompiler -out order-xmlbeans.jar schema/order.xsd
Time to build schema type system: 0.387 seconds
...
Compiled types to: order-xmlbeans.jar
Q2:照抄旧教程调用 xmlObject.getStringValue() 编译失败。
XMLBeans 5.x 的 XmlObject 接口上已没有 getStringValue()(实测 javap org.apache.xmlbeans.XmlObject 无此方法),该方法在父链的 SimpleValue 接口上。写法改为:
((org.apache.xmlbeans.SimpleValue) id).getStringValue()
Q3:XmlOptions.setSavePretty() 方法找不到。
5.x 的缩进序列化方法是 setSavePrettyPrint()(实测 javap org.apache.xmlbeans.XmlOptions 仅返回 setSavePrettyPrint),旧方法名 setSavePretty() 已不存在。
Q4:XPath 表达式一用谓词就抛 NoClassDefFoundError: net/sf/saxon/sxpath/XPathStaticContext。
5.4.1 内置引擎只覆盖无谓词的简单路径,完整 XPath 2.0/XQuery 需要 Saxon-HE 12.10(及其传递依赖 xmlresolver),依赖与实测见《Apache XMLBeans 5.4.1 scomp 编译与进阶实战详解》第五节。
Q5:中文输出乱码。
mvn -v 显示 platform encoding: ANSI_X3.4-1968(POSIX locale),运行加 -Dfile.encoding=UTF-8、编译加 -encoding UTF-8 即可。
十、卸载与清理
# rm -rf /work/mvn-demo /work/schema /root/jar-run
# rm -rf ~/.m2/repository/org/apache/xmlbeans ~/.m2/repository/net/sf/saxon ~/.m2/repository/org/xmlresolver
# apt-get purge --dry-run openjdk-17-jdk
The following packages will be REMOVED:
Purg openjdk-17-jdk [17.0.20.1+1-1~22.04]
确认 --dry-run 列表无误后,把命令换成真实执行(apt-get purge -y openjdk-17-jdk)即可;保留 JDK 时只做前两步清理。
十一、参考链接
- Maven Central:https://central.maven.org/maven2/org/apache/xmlbeans/xmlbeans/
- 官方站点:https://xmlbeans.apache.org/
- XmlObject Javadoc(5.4.1):https://xmlbeans.apache.org/apidocs/5.4.1/org/apache/xmlbeans/XmlObject.html
- 官方入门文档:https://xmlbeans.apache.org/docs/getting_started_guide.html
- 本系列姊妹篇:《Apache XMLBeans 5.4.1 快速入门与集成示例》《Apache XMLBeans 5.4.1 XmlObject 与 Schema API 详解》《Apache XMLBeans 5.4.1 scomp 编译与进阶实战详解》