问题描述
在 Ubuntu 18.04 上,我能够使用以下单行关闭服务器模式下正在运行的 HsqlDB 实例:
java -cp $CLAsspATH:/usr/share/java/hsqldbutil.jar:/usr/share/java/hsqldb.jar "org.hsqldb.cmdline.sqlTool" --inlineRc=url=jdbc:hsqldb:hsql://localhost/$DB_NAME,user=SA,password= --sql="SHUTDOWN;"
升级到 Ubuntu 20.04(使用 HsqlDB 2.4.1 和 HsqlDB Utils 2.5.0)后,失败并显示以下错误:
Error: Could not find or load main class org.hsqldb.cmdline.sqlTool
Caused by: java.lang.classNotFoundException: org.hsqldb.cmdline.sqlTool
确实,我再也无法在两个 JAR 中的任何一个中找到 org.hsqldb.cmdline.sqlTool
,也没有任何暗示该功能消失的地方。
docs 提到了 sqltool.jar
,但我在系统上的任何地方都找不到该文件。
sqlTool 类去哪儿了?或者我还能如何从 shell 脚本关闭正在运行的 HsqlDB 实例?
解决方法
没有正式发布的名为 hsqldbutil.jar 的 jar。该 jar 有一个 Ant 和 Gradle 构建选项,其中包含 GUI 客户端。
通过 http://hsqldb.org 上的下载链接从 SourceForge 下载 hsqldb zip 包
zip 包的/lib 目录包含hsqldb.jar 和sqltool.jar。在您的 Java 命令中使用这些 jar。这也可以确保您使用来自同一发行版的 jar,因为混合不同的发行版将无法正常工作。