Ubuntu 22.04 安装 Apache Commons BSF 指南
在 Ubuntu 22.04 上从零安装 Apache Commons BSF 2.4.0,覆盖 JDK 17 与 Maven 环境、Maven 依赖与官方 bin 包两种方案、jar 直跑最小验证、JVM 参数与卸载清理,命令回显均实测通过。
Ubuntu 22.04 安装 Apache Commons BSF 指南
目标:在 Ubuntu 22.04 上从零搭建 Apache Commons BSF 2.4.0 的开发与运行环境(OpenJDK 17 + Maven 3.6.3),并跑通「JavaScript 求值、Java 对象注入脚本、脚本函数回调 Java」的最小验证程序;本文全部命令与回显均已在 Ubuntu 22.04 实测通过。
Apache Commons BSF(Bean Scripting Framework)是 Apache Commons 旗下的多语言脚本框架,让 Java 程序通过统一的 BSFManager/BSFEngine 接口执行 JavaScript、Python(Jython)、BeanShell、XSLT 等脚本语言,并在 Java 对象与脚本变量之间共享数据。它是纯 Java 库,没有独立进程与常驻服务,安装的本质就是「装好 JDK/构建工具 → 引入 bsf.jar 与脚本引擎 jar → 写最小验证代码 → 编译运行」。本文给出两种落地方式:面向开发的 Maven 依赖方案,以及面向无构建体系场景的官方 bin 包 + jar 直跑方案。
一、环境信息
本节先固定可复现的基线环境,后续所有命令均在此环境执行。
- 操作系统:Ubuntu 22.04.5 LTS(
PRETTY_NAME="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 BSF 2.4.0
- Maven 坐标:
bsf:bsf:2.4.0(传递依赖commons-logging:commons-logging:1.0.4) - 官方二进制目录:
https://archive.apache.org/dist/commons/bsf/binaries/ - 验证用工作目录:
/root/bsf-demo(Maven 工程)、/root/jar-run(jar 直跑)
系统与架构确认(实时回显):
cat /etc/os-release | head -3
PRETTY_NAME="Ubuntu 22.04.5 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
uname -m
x86_64
💡 说明:BSF 是库而非服务,环境中不存在需要常驻的守护进程;「安装完成」的判定标准是可编译并运行一个调用其 API 的最小程序,而不是某个端口处于监听状态。
二、前置条件
本节说明安装前必须满足的条件。Ubuntu 22.04 自带可用的软件源,联网即可通过 apt 获取 JDK 与 Maven。
- 具有 root 或 sudo 权限的 Ubuntu 22.04 系统。
- 可访问 Ubuntu 官方软件源(
apt update能正常拉取索引)。 - 可访问 Apache 归档站
archive.apache.org与 Maven 中央仓库repo1.maven.org(BSF 为 Dormant(休眠)状态的组件,官方活跃下载站downloads.apache.org/commons/bsf/只保留目录入口,二进制文件实际存放在 archive 归档站)。 - 至少 2 GB 可用磁盘空间(JDK + Maven + 依赖合计约 500 MB)。
网络连通性确认(实时回显):
curl -sI --max-time 20 https://repo1.maven.org/maven2/bsf/bsf/2.4.0/bsf-2.4.0.jar | head -1
HTTP/2 200
curl -sI --max-time 30 https://archive.apache.org/dist/commons/bsf/binaries/bsf-bin-2.4.0.tar.gz | head -1
HTTP/1.1 200 OK
三、版本选型说明
BSF 目前处于 Apache Commons 官网标注的 Dormant(休眠)维护状态:不再有活跃开发,也没有计划中的新版本。截至实测日期(2026-10),版本谱系如下,全部以 Maven Central 与 Apache 归档站的实时查询为准。
Maven Central 上 bsf:bsf 的版本元数据(实时回显):
curl -s --max-time 30 https://repo1.maven.org/maven2/bsf/bsf/maven-metadata.xml | grep -E "version>|lastUpdated"
<version>2.2</version>
<version>2.3.0</version>
<version>2.3.0-rc1</version>
⚠️ 注意:
maven-metadata.xml是 2010 年生成后未再刷新的缓存,没有列出 2.4.0,但中央仓库bsf/bsf/2.4.0/目录下的bsf-2.4.0.jar与bsf-2.4.0.pom实际存在(上面 200 回显已验证),Maven 正常解析下载——本文工程构建全部实测通过。这是 Dormant 项目元数据滞后的真实表现,选型时以「实际解析结果」为准。
Apache 归档站 binaries 目录的完整交付物(实时回显):
curl -s --max-time 30 https://archive.apache.org/dist/commons/bsf/binaries/ | grep -oE "(bsf-3.1|bsf-bin-2.4.0)[^\"< ]*\.(tar.gz|zip)" | sort -u | grep -vE "asc|md5|sha"
bsf-3.1-bin.tar.gz
bsf-3.1-bin.zip
bsf-bin-2.4.0.tar.gz
bsf-bin-2.4.0.zip
| 版本线 | 最新版 | 发布时间 | Maven 坐标 | 说明 |
|---|---|---|---|---|
| 2.x(经典 API:BSFManager/BSFEngine) | 2.4.0 | 2006-10-06 | bsf:bsf:2.4.0 | Jakarta 时代最终版,Java 生态引用最广 |
| 3.x(JSR-223 风格:javax.script 早期实现) | 3.1 | 2010-06-24 | org.apache.bsf:bsf-api:3.1、org.apache.bsf:bsf-utils:3.1 | 只含 API 与工具,不含脚本引擎 |
| 更早 2.x | 2.3.0 / 2.2 | 2003 前 | bsf:bsf:2.3.0 等 | 仅历史兼容 |
关键差异与选型:2.4.0 与 3.1 的 API 完全不同——2.4.0 提供自成体系的 BSFManager 门面;3.1 的 bsf-api 内嵌的是一套 javax.script(JSR-223)接口副本,本身不含任何脚本引擎。实测 bsf-2.4.0.jar 的字节码主版本号为 46(即 Java 1.2),在 OpenJDK 8 与 OpenJDK 17 上均可正常加载运行。本文实际采用 2.4.0,理由是它自带引擎注册机制、配套脚本引擎齐全、社区资料最多;3.x 的定位与实测结论见专栏第 5 篇。
版本号最终确认(程序内实测回显):
BSF version = 240.20061006
该值由 BSFManager.getVersion() 返回,240.20061006 即「2.4.0 版本、2006-10-06 构建」,与 RELEASE-NOTE.txt 记载一致。
四、方案 A:Maven 依赖安装(在线,推荐)
本节面向常规 Java 项目开发,通过 apt 安装 JDK 与 Maven,再用 Maven 坐标引入 bsf 依赖并跑通最小验证程序。这是最贴合工程实践的方式。
4.1 方案说明
方案 A 的链路是:apt 安装 openjdk-17-jdk 与 maven → 在 pom.xml 中声明 bsf:bsf:2.4.0 与脚本引擎依赖 → Maven 自动从中央仓库下载 jar 到本地仓库 → 编译并运行验证程序。优点是版本由 pom 统一管控、依赖自动解析;缺点是首次构建需要联网。
4.2 安装 JDK 17
Ubuntu 22.04 官方源内置 openjdk-17-jdk,直接安装即可:
apt-get update -qq && DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-17-jdk maven
echo "install exit=$?"
install exit=0
安装后确认版本(apt-cache policy 输出的实际安装版本,实时回显):
apt-cache policy openjdk-17-jdk | head -3
openjdk-17-jdk:
Installed: 17.0.20.1+1-1~22.04
Candidate: 17.0.20.1+1-1~22.04
验证点:java -version 能输出 17.0.x 即表示 JDK 就绪;若机器装了多个 JDK,用 update-alternatives --config java 选择 17。
4.3 安装 Maven 并确认其绑定的 JDK
Maven 已随 4.2 节的安装命令一并装好,单独安装的等价命令:
DEBIAN_FRONTEND=noninteractive apt-get install -y maven
echo "install exit=$?"
install exit=0
确认版本与 Maven 实际使用的 JDK:
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
验证点:Java version 一行显示 17.0.20.1,说明 Maven 已绑定到 JDK 17,无需额外设置 JAVA_HOME。platform encoding: ANSI_X3.4-1968 是默认 POSIX locale 下的正常现象,中文输出的处理见第七章。
4.4 创建工程并引入依赖
建立一个标准 Maven 工程,pom.xml 中声明 bsf 与 JavaScript 引擎依赖:
mkdir -p /root/bsf-demo/src/main/java
pom.xml(完整内容,文件路径 /root/bsf-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>bsf-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>bsf</groupId>
<artifactId>bsf</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>rhino</groupId>
<artifactId>js</artifactId>
<version>1.7R2</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>
逐项说明关键配置:
bsf:bsf:2.4.0:BSF 本体,Maven 会自动下载并解析其传递依赖commons-logging:1.0.4,缓存到~/.m2/repository/bsf/bsf/2.4.0/。rhino:js:1.7R2:Mozilla Rhino 1.7R2,BSF 内置 JavaScript 引擎(org.apache.bsf.engines.javascript.JavaScriptEngine)的真实实现,不引入它运行时会报找不到org.mozilla.javascript类。与 BSF 2.4.0 同期的 1.7R2 是兼容性实测最稳的版本。maven.compiler.release=17:按 JDK 17 语义编译;bsf.jar 自身是 major=46(Java 1.2)字节码,两者互不影响。maven-compiler-plugin显式固定 3.11.0:Maven 3.6.3 默认绑定的 compiler 插件是 3.1,不认识maven.compiler.release属性,会按 source/target=1.5 编译并被 JDK 17 拒绝。
4.5 最小验证代码
验证程序 BsfVerify.java(文件路径 /root/bsf-demo/src/main/java/BsfVerify.java)覆盖 BSF 最核心的四个动作:求值表达式、执行函数定义并回调、注入 Java 对象、脚本读 Java 对象:
import org.apache.bsf.BSFEngine;
import org.apache.bsf.BSFManager;
public class BsfVerify {
public static void main(String[] args) throws Exception {
System.out.println("BSF version = " + BSFManager.getVersion());
BSFManager mgr = new BSFManager();
Object r1 = mgr.eval("javascript", "<inline>", 1, 1, "1 + 2 * 3");
System.out.println("eval '1 + 2 * 3' = " + r1 + " (" + r1.getClass().getName() + ")");
Object r2 = mgr.eval("javascript", "<inline>", 1, 1, "'Apache BSF'.toUpperCase()");
System.out.println("eval toUpperCase = " + r2);
mgr.declareBean("name", "Ubuntu 22.04", String.class);
Object r3 = mgr.eval("javascript", "<inline>", 1, 1, "'BSF on ' + name");
System.out.println("JS reads name = " + r3);
mgr.exec("javascript", "<inline>", 1, 1, "function add(a, b) { return a + b; }");
BSFEngine engine = mgr.loadScriptingEngine("javascript");
Object r4 = engine.call(null, "add", new Object[]{7, 35});
System.out.println("engine.call add = " + r4);
mgr.terminate();
System.out.println("BsfVerify OK");
}
}
程序要点:eval 的第 1 个参数是语言名(对应 BSF 内置注册表中的 javascript),第 5 个参数是脚本内容本身;declareBean 把 Java 对象以变量名 name 注入脚本全局作用域;engine.call 按函数名调用脚本函数并传 Java 实参。各参数的完整语义见专栏第 4 篇。
4.6 编译与运行验证
编译:
cd /root/bsf-demo && mvn -q compile && echo "EXIT=$?"
EXIT=0
运行(classpath = 编译输出 + 本地仓库三个 jar):
R=~/.m2/repository
java -Dfile.encoding=UTF-8 -cp target/classes:$R/bsf/bsf/2.4.0/bsf-2.4.0.jar:$R/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar:$R/rhino/js/1.7R2/js-1.7R2.jar BsfVerify
BSF version = 240.20061006
eval '1 + 2 * 3' = 7 (java.lang.Integer)
eval toUpperCase = APACHE BSF
JS reads name = BSF on Ubuntu 22.04
engine.call add = 42.0
BsfVerify OK
结果解读:表达式求值返回 Integer 7(1 + 2*3 = 7);字符串大写正确;Java 侧注入的 name 变量在脚本里拼接成功;脚本函数 add(7, 35) 返回 42.0(Rhino 把数值统一映射为 Double)。五项输出全部符合预期,即表示 bsf 2.4.0 + rhino 1.7R2 已在 OpenJDK 17 上完整可用。
依赖树核对(确认传递依赖正确解析):
cd /root/bsf-demo && mvn -B dependency:tree | grep -E ":compile"
[INFO] +- bsf:bsf:jar:2.4.0:compile
[INFO] | \- commons-logging:commons-logging:jar:1.0.4:compile
[INFO] \- rhino:js:jar:1.7R2:compile
五、方案 B:官方 bin 包 + jar 直跑(离线友好)
本节面向没有 Maven/构建体系的场景,直接使用 Apache 归档站发布的二进制包,用 javac + java 完成编译运行,不依赖任何构建工具。
5.1 方案说明
链路是:从 archive.apache.org 下载官方 bin 包 → 校验 sha256 → 解压得到 bsf.jar → 从中央仓库补齐引擎与日志 jar → 用 javac -cp 编译源码 → 用 java -cp 运行。适用于离线环境、脚本化部署或纯粹想「拿到 jar 就能用」的读者。
5.2 下载与完整性校验
cd /root
curl -sO --max-time 60 https://archive.apache.org/dist/commons/bsf/binaries/bsf-bin-2.4.0.tar.gz
curl -sO --max-time 30 https://archive.apache.org/dist/commons/bsf/binaries/bsf-bin-2.4.0.tar.gz.sha256
ls -l bsf-bin-2.4.0.tar.gz
-rw-r--r-- 1 root root 232413 Oct 15 05:44 bsf-bin-2.4.0.tar.gz
校验 sha256(期望值来自官方 .sha256 文件,实测值必须与之一致):
echo "期望: $(cat bsf-bin-2.4.0.tar.gz.sha256)"
echo "实测: $(sha256sum bsf-bin-2.4.0.tar.gz | awk '{print $1}')"
期望: 28bbd69c6218922a94ae0c2fcbf5a7bf2a8de5dabc849167687933e4c986c3d7 *./bsf/binaries/bsf-bin-2.4.0.tar.gz
实测: 28bbd69c6218922a94ae0c2fcbf5a7bf2a8de5dabc849167687933e4c986c3d7
⚠️ 注意:官方
.sha256文件末尾附带原始路径*./bsf/binaries/...,比对时只取前面 64 位十六进制摘要即可。若摘要不一致,说明下载包损坏或被篡改,须删除后重新下载。
5.3 解压
tar xzf bsf-bin-2.4.0.tar.gz
ls bsf-2.4.0 | head -7
AUTHORS.txt
CHANGES.txt
INSTALL.txt
LICENSE.txt
NOTICE.txt
README.txt
RELEASE-NOTE.txt
包内 lib/ 目录只有一个主 jar:
ls -l bsf-2.4.0/lib/
-rw-r--r-- 1 root root 113369 Oct 6 2006 bsf-2.4.0/lib/bsf.jar
主 jar 为 bsf.jar(113369 字节),samples/ 目录含 bsh、calc、scriptedui、xsl 四组官方示例,可作为进阶参考。
5.4 javac 编译与 java 运行
从中央仓库补齐 rhino 与 commons-logging 两个运行期 jar,再编译运行:
mkdir -p /root/jar-run && cd /root/jar-run
cp /root/bsf-2.4.0/lib/bsf.jar .
cp /root/bsf-demo/src/main/java/BsfVerify.java .
curl -sO --max-time 60 https://repo1.maven.org/maven2/rhino/js/1.7R2/js-1.7R2.jar
curl -sO --max-time 60 https://repo1.maven.org/maven2/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar
javac -encoding UTF-8 -cp bsf.jar -d out BsfVerify.java
java -Dfile.encoding=UTF-8 -cp out:bsf.jar:js-1.7R2.jar:commons-logging-1.0.4.jar BsfVerify
BSF version = 240.20061006
eval '1 + 2 * 3' = 7 (java.lang.Integer)
eval toUpperCase = APACHE BSF
JS reads name = BSF on Ubuntu 22.04
engine.call add = 42.0
BsfVerify OK
验证点:java -cp 一行成功打印与方案 A 完全一致的结果,且无 NoClassDefFoundError,说明 jar 直跑可用。BSF 对运行期 classpath 的要求就是「bsf.jar + 目标语言引擎 jar + commons-logging.jar」三件套。
六、方案对比与选择建议
本节汇总两种方案的差异,给出选型建议。两种方案产出的是同一份 bsf 2.4.0 代码,差别仅在获取与装配方式。
| 维度 | 方案 A:Maven 依赖 | 方案 B:官方 bin 包 + jar 直跑 |
|---|---|---|
| 运行期依赖 | Maven 自动解析(含 commons-logging) | 手工下载并拼 classpath |
| 是否联网 | 首次构建需联网 | 仅下载 jar 时需要联网 |
| 版本管控 | pom 统一声明,可锁版本 | 靠文件命名区分 |
| 引擎 jar 管理 | 依赖坐标自动传递 | 逐个手工下载 |
| 可复现产物 | mvn package 一键构建 | javac 逐文件编译 |
| 适用场景 | 常规工程开发 | 离线脚本、临时验证、无构建体系 |
选型建议:若项目有构建体系(Maven/Gradle),一律选方案 A;若在无构建工具的服务器上临时验证或手工嵌入既有部署脚本,选方案 B。两者也可共存——用方案 A 开发、用方案 B 分发 jar。
七、基础配置
本节说明 BSF 使用中真正需要设置的「配置」。它是库而非服务,没有独立配置文件,全部行为通过 JVM 参数与代码参数控制。
1. JAVA_HOME 环境变量。 apt 版 Maven 通过 PATH 中的 java 定位 JDK(见 4.3 节回显的 runtime 一行),默认无需设置。仅当手工安装 JDK 时显式导出:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
echo "JAVA_HOME=$JAVA_HOME"
JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
持久化方法:把上面一行写入 /root/.bashrc 末尾,重新登录会话后生效。
2. 中文输出编码。 默认 locale 下 JVM 平台编码为 ANSI_X3.4-1968(见 4.3 节回显),System.out 打印中文会变问号。解决:运行命令统一加 -Dfile.encoding=UTF-8(本文所有 java 命令均已携带);或将系统 locale 调成 UTF-8(export LANG=C.UTF-8)。
3. JVM 堆参数。 BSF 脚本引擎的内存开销主要是引擎解释器与脚本作用域,常规用法 256 MB 堆足够。JVM 参数位置在 java 命令与 -cp 之间,例如:
java -Xms256m -Xmx256m -Dfile.encoding=UTF-8 -cp out:bsf.jar:js-1.7R2.jar:commons-logging-1.0.4.jar BsfVerify
BSF version = 240.20061006
eval '1 + 2 * 3' = 7 (java.lang.Integer)
eval toUpperCase = APACHE BSF
JS reads name = BSF on Ubuntu 22.04
engine.call add = 42.0
BsfVerify OK
修改方法:-Xms 是初始堆、-Xmx 是最大堆,按需调大(如 -Xms512m -Xmx512m);系统级部署时写入 systemd unit 的 Environment=JAVA_OPTS=-Xms256m -Xmx256m(每行仅一个 Environment=)或启动脚本中拼接 java 启动参数的位置。长期运行大量脚本时建议开启 -XX:+HeapDumpOnOutOfMemoryError 便于排查脚本内存泄漏。
八、安装验证清单
安装完成后逐项核对,全部满足即环境就绪:
| 检查项 | 命令 | 实测预期 |
|---|---|---|
| JDK 版本 | java -version | openjdk version "17.0.20.1" |
| Maven 绑定 JDK | mvn -version(看前 4 行) | Java version: 17.0.20.1 |
| 依赖解析 | mvn -B dependency:tree(看 compile 节点) | 出现 bsf:bsf:jar:2.4.0 与 rhino:js:jar:1.7R2 |
| 验证程序 | java -cp out:bsf.jar:js-1.7R2.jar:commons-logging-1.0.4.jar BsfVerify | 六行输出,末行 BsfVerify OK |
| 引擎注册 | 程序内 BSFManager.isLanguageRegistered("javascript") | true |
九、常见问题(FAQ)
Q1:mvn compile 报 Source option 5 is no longer supported. Use 7 or later. 怎么办?
Maven 3.6.3 默认绑定的 maven-compiler-plugin 3.1 不认识 maven.compiler.release 属性,退回 source/target=1.5 编译被 JDK 17 拒绝。修复:在 pom 的 <build><plugins> 中显式固定 maven-compiler-plugin 3.11.0(见 4.4 节 pom 全文),重新编译即可。
Q2:运行报 java.lang.UnsupportedClassVersionError: BsfVerify has been compiled by a more recent version (class file version 61.0)?
编译用的 JDK 17(类文件版本 61)高于运行的 JDK(如 JDK 8 只认 52)。本文环境统一 JDK 17 不会遇到;若目标机器只有 JDK 8,两种解法:一是用 JDK 8 的 javac 重新编译源码;二是 Maven 编译参数改为 <maven.compiler.release>8</maven.compiler.release> 产出 JDK 8 兼容字节码。bsf.jar 自身是 major=46(Java 1.2)字节码,任何 modern JDK 都能加载。
Q3:运行 BSF 程序报 NoClassDefFoundError: org/mozilla/javascript/...?
classpath 缺 JavaScript 引擎实现。BSF 只负责引擎接口与调度,JavaScript 引擎需要 Rhino jar(rhino:js:1.7R2,坐标见 4.4 节)。jar 直跑场景把 js-1.7R2.jar 加进 -cp;Maven 场景补依赖即可。
Q4:Jython 引擎启动时打印 *sys-package-mgr*: can't create package cache dir 警告?
Jython 会尝试在自身 jar 同目录下创建包缓存目录,jar 位于只读目录或权限不足时打印该警告(不影响功能)。修复:运行命令加 JVM 参数 -Dpython.cachedir=/tmp/jython-cache(目录需可写),实测警告消失且首次加载后明显加速。
Q5:下载 archive.apache.org 速度慢或超时? 归档站带宽有限属正常现象。可在会话中配置代理后再执行 curl:
export http_proxy=http://192.168.1.62:7897 https_proxy=http://192.168.1.62:7897
仅对当前会话生效,unset http_proxy https_proxy 可清除。Maven 走代理则在 ~/.m2/settings.xml 的 <proxies> 段配置同地址。
Q6:中文输出显示为问号?
见第七章第 2 点:加 -Dfile.encoding=UTF-8 运行参数,或 export LANG=C.UTF-8 修正系统 locale。
十、卸载与清理
BSF 本身不产生系统级安装,卸载即移除依赖与本地文件。
移除工程、验证目录与 bin 包(实测回显):
rm -rf /root/bsf-demo /root/jar-run /root/bsf-2.4.0 /root/bsf-bin-2.4.0.tar.gz /root/bsf-bin-2.4.0.tar.gz.sha256
ls /root/bsf-demo 2>&1
ls: cannot access '/root/bsf-demo': No such file or directory
移除 Maven 本地仓库中的 BSF 相关构件(影响所有工程,慎用):
rm -rf $HOME/.m2/repository/bsf $HOME/.m2/repository/rhino $HOME/.m2/repository/org/python
卸载 JDK 与 Maven(仅当不再需要)。先以 -s 预演确认将删除的包:
apt-get -s purge -y openjdk-17-jdk maven | head -8
# 输出节选(实测首尾)
The following packages will be REMOVED:
maven* openjdk-17-jdk*
0 upgraded, 0 newly installed, 2 to remove and 2 not upgraded.
Purg maven [3.6.3-5]
Purg openjdk-17-jdk [17.0.20.1+1-1~22.04]
确认无误后真正卸载:
apt-get purge -y openjdk-17-jdk maven && apt-get autoremove -y
十一、参考链接
- Apache Commons BSF 官方主页(Dormant 状态说明):https://commons.apache.org/bsf/
- Apache 归档站 BSF 二进制目录:https://archive.apache.org/dist/commons/bsf/binaries/
- Maven 中央仓库 bsf:bsf 坐标:https://repo1.maven.org/maven2/bsf/bsf/
- Maven 中央仓库 bsf:bsf:2.4.0 POM:https://repo1.maven.org/maven2/bsf/bsf/2.4.0/bsf-2.4.0.pom
- Rhino(JavaScript 引擎)Maven 坐标:https://repo1.maven.org/maven2/rhino/js/
- OpenJDK 17 安装包(Ubuntu 官方源):
apt-cache show openjdk-17-jdk