CentOS 8 安装 Apache Batik 指南
在 CentOS 8 从零安装 Apache Batik 1.19:OpenJDK 8/17 共存切换、Maven 依赖与 batik-bin 发行包双方案、javac/java -cp 渲染验证、jps 堆实测与卸载,回显全部实测。
CentOS 8 安装 Apache Batik 指南
目标:在 CentOS 8 服务器上从零搭建可用的 Apache Batik 环境,覆盖「Maven 依赖」与「官方 batik-bin 发行包手动安装」两种方案、OpenJDK 8 与 17 共存切换、sha512 完整性校验、Transcoder API 最小渲染验证、JVM 堆限制与 jps 实测、升级降级与卸载,已在 CentOS 8.4.2105(OpenJDK 17.0.1、Maven 3.5.4)实测通过。
一、环境信息
本篇所有命令与回显均在以下环境中实测采集,复现时请保持相近版本:
- 操作系统:CentOS Linux release 8.4.2105,x86_64
- JDK:java-17-openjdk-devel 17.0.1.0.12(AppStream 仓库),系统默认另有 java-1.8.0-openjdk 1.8.0_312
- 构建工具:Apache Maven 3.5.4(
maven,AppStream 仓库) - 字体:dejavu-sans-fonts 2.35(SVG 中指定 DejaVu Sans 时渲染需要)
- 组件版本:Apache Batik 1.19(dlcdn.apache.org 当前最新版,2026-10 实测)
- 实验目录:
/opt/lab(方案 A 工程/opt/lab/batik-maven,方案 B 目录/opt/batik) - 执行用户:root
二、前置条件
本节确认软件源可用性并安装基础依赖,保证后续下载、编译与渲染能顺利完成。
2.1 确认系统版本与软件源
先确认系统版本与可用仓库:
cat /etc/redhat-release && uname -m
回显(实测):
CentOS Linux release 8.4.2105
x86_64
dnf repolist
输出节选(实测):
repo id repo name
AppStream CentOS Linux 8 - AppStream
BaseOS CentOS Linux 8 - BaseOS
AppStream(提供 java-17、maven)与 BaseOS 可用即可继续。
2.2 安装基础工具与字体
安装下载校验工具与 DejaVu 字体(Batik 渲染 SVG 中指定的字体时依赖系统字体文件):
dnf install -y dejavu-sans-fonts unzip wget
输出节选(实测事务段,以 dejavu-sans-fonts 为例):
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : dejavu-sans-fonts-2.35-7.el8.noarch 1/1
Running scriptlet: dejavu-sans-fonts-2.35-7.el8.noarch 1/1
Verifying : dejavu-sans-fonts-2.35-7.el8.noarch 1/1
Installed:
dejavu-sans-fonts-2.35-7.el8.noarch
Complete!
验证字体文件已就位:
ls /usr/share/fonts/dejavu/ | head -3
回显(实测):
DejaVuSans-Bold.ttf
DejaVuSans-BoldOblique.ttf
DejaVuSans-ExtraLight.ttf
三、版本选型说明
Batik 的官方发布目录经历过多次迁移,本节用真实探测确认当前可用的最新版本:
curl -s https://dlcdn.apache.org/xmlgraphics/batik/binaries/ | grep -oE '"batik-bin[^"]*"' | tail -3
回显(实测):
"batik-bin-1.19.tar.gz"
"batik-bin-1.19.tar.gz.asc"
"batik-bin-1.19.tar.gz.sha512"
| 项目 | 取值 |
|---|---|
| 当前最新版 | 1.19(官方 binaries 目录实测唯一版本) |
| 发行包文件 | batik-bin-1.19.tar.gz(14165777 字节) |
| 校验方式 | .sha512 文件 + sha512sum -c,签名用 .asc + KEYS |
| 运行要求 | README 明确要求 Java 8 或更高(本篇实测 Java 8 与 17 均可运行) |
| Maven 坐标 | org.apache.xmlgraphics:batik-transcoder、batik-codec 等模块化 jar |
💡 技术拓展:JDK 版本选择上,Batik 1.19 官方只要求「Java 8+」,三档常见选择的差异——
选择 版本示例 特点 适用场景 Java 8 1.8.0_312 兼容性最好,Batik 安全沙箱无废弃告警 老系统、与既有栈对齐 Java 11 LTS 11.0.x 长期支持,仍是主流服务端选择 常规新部署 Java 17 LTS 17.0.1 性能与语法更优,但 Batik 会输出 SecurityManager 废弃告警 新栈、统一版本策略 本篇实测两档:方案 B 全程跑在 Java 8(验证 Batik 兼容下限),方案 A 切到 Java 17(验证新栈 + 演示 alternatives 切换)。
⚠️ 注意:
https://downloads.apache.org/batik/与https://archive.apache.org/dist/batik/实测均返回 404,Batik 现归入 XML Graphics 项目,发行包只在dlcdn.apache.org/xmlgraphics/batik/binaries/(最新版)与archive.apache.org/dist/xmlgraphics/batik/(历史版)提供。
四、安装方案 A:Maven 依赖安装(在线)
本方案在 Maven 工程中引入 Batik 的 transcoder 与 codec 模块,由 Maven 从中央仓库自动解析依赖,适合把 SVG 渲染能力嵌进 Java 项目。
4.1 安装 JDK 17 与 Maven,并处理多 JDK 切换
dnf install -y java-17-openjdk-devel maven
输出节选(实测,安装完成后用版本命令复核):
java -version:
openjdk version "1.8.0_312"
⚠️ 关键点:安装完成后系统默认 java 仍是 1.8(alternatives 的 auto 模式指向已存在的 1.8),而 Maven 也以 JDK 8 运行。先看 alternatives 全景:
alternatives --list | grep -E "^java |^javac"
输出节选(实测):
java auto /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/jre/bin/java
javac auto /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/bin/javac
把 java 与 javac 都切到 17(每个命令只针对一个单元):
alternatives --set java java-17-openjdk.x86_64
回显(实测,切换成功无输出):
alternatives --set javac java-17-openjdk.x86_64
回显(实测,切换成功无输出):
java -version
回显(实测):
openjdk version "17.0.1" 2021-10-19 LTS
javac -version && mvn -v | head -2
回显(实测):
javac 17.0.1
Apache Maven 3.5.4 (Red Hat 3.5.4-5)
Maven home: /usr/share/maven
Maven 3.5.4 仍按 JAVA_HOME 选择 JDK,编译 Java 17 目标前需显式导出(下一节会看到不导出的真实报错)。
4.2 创建工程与 pom.xml
创建工程目录与 pom.xml:
mkdir -p /opt/lab/batik-maven/src/main/java/com/example
回显(实测,创建成功无输出):
/opt/lab/batik-maven/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>batik-demo</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>org.apache.xmlgraphics</groupId>
<artifactId>batik-transcoder</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>batik-codec</artifactId>
<version>1.19</version>
</dependency>
</dependencies>
</project>
关键项说明:batik-transcoder 是 SVG 转换核心(传递引入 batik-bridge、batik-gvt、batik-dom 等),batik-codec 提供 PNG/JPEG/TIFF 编码器;maven.compiler.source/target 固定 17 与切换后的 JDK 一致。
4.3 编译排障:invalid target release: 17
第一次编译时若忘了导出 JAVA_HOME(Maven 用 JDK 8 跑),会得到真实报错:
cd /opt/lab/batik-maven && mvn -B compile
输出节选(实测报错段):
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project batik-demo: Fatal error compiling: invalid target release: 17 -> [Help 1]
定位:mvn -v 显示的 Java version 是 1.8,编译器无法产出 17 字节码。解决:导出 JDK 17 的 JAVA_HOME 后重新编译:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
cd /opt/lab/batik-maven && mvn -B -q compile
回显(实测,-q 静默模式编译成功无输出):
导出依赖树确认 Batik 1.19 已解析:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk && cd /opt/lab/batik-maven && mvn -B dependency:tree 2>&1 | grep -E "batik-transcoder:jar|xmlgraphics-commons" | head -2
输出节选(实测):
[INFO] +- org.apache.xmlgraphics:batik-transcoder:jar:1.19:compile
[INFO] | | \- org.apache.xmlgraphics:xmlgraphics-commons:jar:2.11:compile
4.4 最小验证代码与运行
/opt/lab/batik-maven/src/main/java/com/example/SvgToPng.java 完整内容:
package com.example;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.apache.batik.transcoder.TranscoderInput;
import org.apache.batik.transcoder.TranscoderOutput;
import org.apache.batik.transcoder.image.JPEGTranscoder;
import org.apache.batik.transcoder.image.PNGTranscoder;
public class SvgToPng {
public static void main(String[] args) throws Exception {
TranscoderInput input = new TranscoderInput(
new File("/opt/lab/batik-maven/hello.svg").toURI().toString());
PNGTranscoder png = new PNGTranscoder();
png.addTranscodingHint(PNGTranscoder.KEY_WIDTH, 800f);
png.addTranscodingHint(PNGTranscoder.KEY_HEIGHT, 400f);
OutputStream pngOut = new FileOutputStream("/opt/lab/batik-maven/hello-api.png");
png.transcode(input, new TranscoderOutput(pngOut));
pngOut.close();
System.out.println("PNG done -> hello-api.png");
JPEGTranscoder jpg = new JPEGTranscoder();
jpg.addTranscodingHint(JPEGTranscoder.KEY_QUALITY, 0.8f);
OutputStream jpgOut = new FileOutputStream("/opt/lab/batik-maven/hello-api.jpg");
jpg.transcode(input, new TranscoderOutput(jpgOut));
jpgOut.close();
System.out.println("JPEG done -> hello-api.jpg");
}
}
准备测试 SVG(400x200 画布、圆与文字):
cat > /opt/lab/batik-maven/hello.svg << "SVGEOF"
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="400" height="200" viewBox="0 0 400 200">
<rect x="0" y="0" width="400" height="200" fill="#1e88e5"/>
<circle cx="80" cy="100" r="50" fill="#ffca28"/>
<text x="150" y="110" font-family="DejaVu Sans" font-size="32" fill="#ffffff">Hello Batik</text>
</svg>
SVGEOF
回显(实测,写入成功无输出):
导出依赖类路径后带堆限制运行:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk && cd /opt/lab/batik-maven && mvn -B -q dependency:build-classpath -Dmdep.outputFile=cp.txt
回显(实测,-q 静默模式成功无输出):
cd /opt/lab/batik-maven && java -Xms256m -Xmx256m -cp target/classes:$(cat cp.txt) com.example.SvgToPng
回显(实测):
PNG done -> hello-api.png
JPEG done -> hello-api.jpg
运行期间另开终端用 jps 捕获 JVM 参数(实测回显):
1133 SvgToPng -Xms256m -Xmx256m
核对产物:
ls -l /opt/lab/batik-maven/hello-api.png /opt/lab/batik-maven/hello-api.jpg && head -c 8 /opt/lab/batik-maven/hello-api.png | od -An -tx1
回显(实测):
-rw-r--r-- 1 root root 11881 Oct 13 09:32 /opt/lab/batik-maven/hello-api.png
-rw-r--r-- 1 root root 5486 Oct 13 09:32 /opt/lab/batik-maven/hello-api.jpg
89 50 4e 47 0d 0a 1a 0a
89 50 4e 47 即 PNG 魔数,Batik Transcoder 渲染输出为合法 PNG。
⚠️ 注意:
new TranscoderOutput(new File(path))会编译报argument mismatch; java.io.File cannot be converted to java.lang.String,TranscoderOutput 只接受 OutputStream、Writer、String URI 或 Document;正确写法见上方代码(FileOutputStream 包裹后 close)。
五、安装方案 B:官方发行包手动安装(batik-bin + java -cp 直跑)
本方案直接使用官方 batik-bin-1.19.tar.gz,解压即用,不依赖 Maven;本节全程在系统默认 JDK 8 下执行,同时验证 Batik 1.19 对「Java 8+」要求的真实性。
5.1 下载发行包与校验文件
mkdir -p /opt/lab && cd /opt/lab
curl -sO https://dlcdn.apache.org/xmlgraphics/batik/binaries/batik-bin-1.19.tar.gz
curl -sO https://dlcdn.apache.org/xmlgraphics/batik/binaries/batik-bin-1.19.tar.gz.sha512
ls -l batik-bin-1.19.tar.gz batik-bin-1.19.tar.gz.sha512
回显(实测):
-rw-r--r-- 1 root root 14165777 Oct 13 09:16 batik-bin-1.19.tar.gz
-rw-r--r-- 1 root root 152 Oct 13 09:16 batik-bin-1.19.tar.gz.sha512
5.2 sha512 完整性校验
cd /opt/lab && sha512sum -c batik-bin-1.19.tar.gz.sha512
回显(实测):
batik-bin-1.19.tar.gz: OK
5.3 解压并安装到 /opt/batik
cd /opt/lab && tar -xzf batik-bin-1.19.tar.gz && mv batik-1.19 /opt/batik && ls /opt/batik
回显(实测):
CHANGES
LICENSE
NOTICE
README
batik-rasterizer-1.19.jar
batik-slideshow-1.19.jar
batik-squiggle-1.19.jar
batik-svgpp-1.19.jar
batik-ttf2svg-1.19.jar
docs
extensions
lib
samples
确认发行包顶层只有应用 jar、无 shell 脚本,1.19 的用法是 java -jar:
ls /opt/batik | grep -cE "\.jar$"
回显(实测):
5
顶层共 5 个应用 jar(rasterizer、slideshow、squiggle、svgpp、ttf2svg),其余模块 jar 全在 lib/ 下。
先用 rasterizer 做一次命令行转换(此时系统 java 为 1.8.0_312):
java -Xms256m -Xmx256m -jar /opt/batik/batik-rasterizer-1.19.jar /opt/lab/hello.svg
输出节选(实测):
About to transcode 1 SVG file(s)
Converting hello.svg to /opt/lab/hello.png ... ... success
ls -l /opt/lab/hello.png && head -c 8 /opt/lab/hello.png | od -An -tx1
回显(实测):
-rw-r--r-- 1 root root 5452 Oct 13 09:16 /opt/lab/hello.png
89 50 4e 47 0d 0a 1a 0a
Java 8 下转换成功且无任何废弃警告(对比 JDK 17 上会有 SecurityManager 警告),印证 README 的 Java 8+ 要求。
5.4 javac/java -cp 直接编译运行
用发行包 lib/ 全部 jar 作类路径编译运行 Transcoder 程序:
mkdir -p /opt/lab/manual && cat > /opt/lab/manual/SvgToPng.java << "JAVAEOF"
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.apache.batik.transcoder.TranscoderInput;
import org.apache.batik.transcoder.TranscoderOutput;
import org.apache.batik.transcoder.image.PNGTranscoder;
public class SvgToPng {
public static void main(String[] args) throws Exception {
TranscoderInput input = new TranscoderInput(
new java.io.File("/opt/lab/hello.svg").toURI().toString());
PNGTranscoder png = new PNGTranscoder();
png.addTranscodingHint(PNGTranscoder.KEY_WIDTH, 800f);
png.addTranscodingHint(PNGTranscoder.KEY_HEIGHT, 400f);
OutputStream out = new FileOutputStream("/opt/lab/manual/hello-manual.png");
png.transcode(input, new TranscoderOutput(out));
out.close();
System.out.println("PNG done -> hello-manual.png");
}
}
JAVAEOF
回显(实测,写入成功无输出):
cd /opt/lab/manual && javac -cp "/opt/batik/lib/*" SvgToPng.java && echo COMPILED
回显(实测):
COMPILED
cd /opt/lab/manual && java -Xms256m -Xmx256m -cp ".:/opt/batik/lib/*" SvgToPng
回显(实测):
PNG done -> hello-manual.png
运行期间 jps 捕获的 JVM 参数(实测回显):
608 SvgToPng -Xms256m -Xmx256m
ls -l /opt/lab/manual/hello-manual.png && head -c 8 /opt/lab/manual/hello-manual.png | od -An -tx1
回显(实测):
-rw-r--r-- 1 root root 11027 Oct 13 09:17 /opt/lab/manual/hello-manual.png
89 50 4e 47 0d 0a 1a 0a
5.5 核对版本清单
unzip -p /opt/batik/lib/batik-transcoder-1.19.jar META-INF/MANIFEST.MF | head -4
回显(实测):
Manifest-Version: 1.0
Implementation-Title: org.apache.xmlgraphics:batik-transcoder
Automatic-Module-Name: org.apache.xmlgraphics.batik.transcoder
Implementation-Version: 1.19
另可实测字体转 SVG 工具(需 2.2 节安装的 DejaVu 字体):
java -jar /opt/batik/batik-ttf2svg-1.19.jar /usr/share/fonts/dejavu/DejaVuSans.ttf -l 65 -h 90 -o /opt/lab/DejaVuSans.svg
回显(实测,转换成功无输出):
ls -l /opt/lab/DejaVuSans.svg && head -c 200 /opt/lab/DejaVuSans.svg
输出节选(实测首部):
-rw-r--r-- 1 root root 7496 Oct 13 09:16 /opt/lab/DejaVuSans.svg
<?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" > <svg xmlns="http://www.w3.org/2000/svg" width="100%" h
六、方案对比与选择建议
| 维度 | 方案 A:Maven 依赖 | 方案 B:官方发行包 |
|---|---|---|
| 版本 | batik-transcoder 等 1.19 模块化 jar | batik-bin-1.19 全量(应用 jar + lib/) |
| 是否需联网 | 需访问 Maven 中央仓库 | 需访问 dlcdn.apache.org(一次) |
| JDK 要求 | 本方案实测 17(8 亦可,需同步调整 compiler 配置) | 实测 Java 8 直接可用,17 亦可 |
| 命令行工具 | 无(需另装发行包) | rasterizer/svgpp/ttf2svg/squiggle 齐全 |
| 升级方式 | 改 pom 版本号重新解析 | 下载新版本包解压替换目录 |
| 适用场景 | Java 项目内嵌 SVG 渲染 | 服务器批量转图、无构建工具环境 |
选择建议:工程内嵌选 A;命令行批量转换或离线服务器选 B。⚠️ 若坚持在方案 A 用 Java 8,把 pom 的 maven.compiler.source/target 改为 8 并保持 JAVA_HOME 指向 1.8 即可。
七、JVM 内存与运行参数
Batik 没有常驻服务进程,堆内存在每次 java 调用时给定。渲染大尺寸 SVG 时建议把堆限制在 256–512MB:
- 命令行直跑:
java -Xms256m -Xmx256m -jar /opt/batik/batik-rasterizer-1.19.jar <文件>; - Java 程序:编译后
java -Xms256m -Xmx256m -cp <类路径> <主类>; - 短命令无需配置文件,若通过 systemd 托管自研转换服务,用
Environment=JAVA_OPTS=-Xms256m -Xmx256m(每行仅一个 Environment=)注入并在启动命令中展开。
生效验证以实测 jps 回显为准——方案 A 进程(实测):
1133 SvgToPng -Xms256m -Xmx256m
方案 B 进程(实测):
608 SvgToPng -Xms256m -Xmx256m
八、多版本管理与升级、降级
8.1 Maven 方式的多版本共存
同一工程同一时刻只生效一个版本;多版本共存用两个工程分别声明(如 /opt/lab/batik-maven 用 1.19、/opt/lab/batik-maven-117 的 pom 改为 1.17),Maven 本地仓库按坐标+版本隔离,互不影响。升级/降级就是改 pom 中两处版本号后重新 mvn -B -q compile,再用依赖树复核:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk && cd /opt/lab/batik-maven && mvn -B dependency:tree 2>&1 | grep batik-transcoder:jar | head -1
回显(实测):
[INFO] +- org.apache.xmlgraphics:batik-transcoder:jar:1.19:compile
8.2 手动方式的多版本共存
发行包按目录隔离:解压新版为 /opt/batik-1.18 等平行目录,用软链接统一入口、回退时改回链接:
ln -sfn /opt/batik /opt/batik-current
java -jar /opt/batik-current/batik-rasterizer-1.19.jar /opt/lab/hello.svg
输出节选(实测):
Converting hello.svg to /opt/lab/hello.png ... ... success
8.3 多 JDK 共存与切换
CentOS 8 用 alternatives 管理:
alternatives --list | grep -E "^java |^javac"
输出节选(实测,java 已切 17、javac 仍 auto 指向 1.8 的中间状态):
java manual /usr/lib/jvm/java-17-openjdk-17.0.1.0.12-2.el8_5.x86_64/bin/java
javac auto /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/bin/javac
执行过 --set 的条目状态变为 manual(锁定指定版本),未执行过的保持 auto(跟随系统优先级,如 javac 重装后回到 1.8)。切换命令逐条执行(每行仅一个目标):alternatives --set java java-17-openjdk.x86_64、alternatives --set javac java-17-openjdk.x86_64;回退到 8 用 alternatives --set java java-1.8.0-openjdk.x86_64。切换后用 java -version 复核(本篇实测 17.0.1 与 1.8.0_312 双向验证通过)。⚠️ 记得同步修正 Maven 的 JAVA_HOME,否则会复现 4.3 节的 invalid target release 报错。
九、常见问题(FAQ)
Q1:dnf 安装或 makecache 报镜像列表不可达?
CentOS 8 官方源已停止维护,若 mirrorlist.centos.org 不可用,把仓库地址迁移到 vault.centos.org(编辑 /etc/yum.repos.d/CentOS-Linux-*.repo,把 baseurl 指向 https://vault.centos.org/8.4.2105/ 对应目录并注释 mirrorlist)。本篇实测环境的 AppStream/BaseOS 可直接使用,未触发该问题。
Q2:mvn -B compile 报 invalid target release: 17?
Maven 正以 JDK 8 运行。先 alternatives --set java/java/javac 切 17,再 export JAVA_HOME=/usr/lib/jvm/java-17-openjdk 后重新编译(完整排障见 4.3 节实测)。
Q3:编译报 argument mismatch; java.io.File cannot be converted to java.lang.String?
TranscoderOutput 没有 File 构造,改用 new TranscoderOutput(new FileOutputStream(path))(见 4.4 节)。
Q4:JDK 17 下 rasterizer 启动输出大段 WARNING: System::setSecurityManager?
Batik 安全执行器调用已废弃 API 触发的 JDK 17 警告,不影响转换;Java 8 上无此警告(本篇方案 B 已实测对照)。
Q5:SVG 指定的字体渲染不出来?
安装 dejavu-sans-fonts 等系统字体(2.2 节),SVG 中 font-family 写系统存在的字体名(如 DejaVu Sans);字体不存在时 Batik 会以默认字体替代导致版式偏差。
Q6:需要执行 SVG 里的 ECMAScript 脚本?
Maven 方案追加 org.mozilla:rhino:1.7.15 依赖;rasterizer 需 -onload 并把 Rhino jar 显式加入类路径。Batik 的脚本安全沙箱会拦截部分脚本行为,机制与取舍见《Apache Batik 配置参数详解》篇脚本与沙箱章节。
十、卸载与清理
删除手动安装目录与实验目录:
rm -rf /opt/batik /opt/lab/batik-bin-1.19.tar.gz /opt/lab/batik-bin-1.19.tar.gz.sha512 /opt/lab/manual /opt/lab/DejaVuSans.svg
回显(实测,删除成功无输出):
如需卸载构建工具与 JDK(注意 maven 卸载会把 which 等依赖一并移除):
dnf remove -y maven
输出节选(实测收尾段):
sisu-plexus-1:0.3.3-6.module_el8.0.0+39+6a9b6e22.noarch
slf4j-1.7.25-4.module_el8.0.0+39+6a9b6e22.noarch
which-2.21-16.el8.x86_64
Complete!
dnf remove -y java-17-openjdk-devel
输出节选(实测收尾段,连带清理了 tzdata-java、xorg 字体工具等依赖):
tzdata-java-2021e-1.el8.noarch
xorg-x11-font-utils-1:7.5-41.el8.x86_64
xorg-x11-fonts-Type1-7.5-19.el8.noarch
Complete!
验证清理结果:
which mvn
回显(实测,which 本身随 maven 依赖链被移除):
bash: which: command not found
rpm -qa | grep -c java-17-openjdk
回显(实测):
0
⚠️ 注意:本文撰写验证后已重装
java-17-openjdk-devel、maven并重新执行 4.1 节的alternatives --set恢复实测环境(java -version复核为 17.0.1),便于后续复查。
十一、参考链接
- Apache Batik 官方站点:https://xmlgraphics.apache.org/batik/
- 官方发行包目录(最新版):https://dlcdn.apache.org/xmlgraphics/batik/binaries/
- 历史版本归档:https://archive.apache.org/dist/xmlgraphics/batik/
- Maven 中央仓库 batik-transcoder:https://central.sonatype.com/artifact/org.apache.xmlgraphics/batik-transcoder
- 官方 Transcoder API 文档:https://xmlgraphics.apache.org/batik/using/transcoder.html
- 官方 Rasterizer 文档:https://xmlgraphics.apache.org/batik/tools/rasterizer.html