ClassNotFoundException 运行 Liquibase 独立于命令行

ClassNotFoundException running Liquibase standalone on command line

我想在命令行上 运行 Liquibase 独立(即 w/o "installation")。但是,无论我尝试什么,我都会得到 java.lang.ClassNotFoundException: ch.qos.logback.core.Context 或其他一些 logback class.

我检查了 Liquibase pom.xml 以准确找出它需要哪些依赖项并相应地提供它们。

1.尝试

java -jar liquibase-core-3.8.6.jar \
     -cp jaxb-api-2.3.0.jar:snakeyaml-1.24.jar:slf4j-api-1.7.28.jarlogback-core-1.2.3.jar::logback-classic-1.2.3.jar \
     --classpath=backend/target/mywar.war \
     --changeLogFile=db/changelog/db.changelog-master.xml

2。并进一步尝试

我知道 -cpjava 命令的常规 class 路径参数,--classpath 是 Liquibase 根据 the documentation 的程序参数.然而,我仍然尝试了第一次尝试的各种参数组合,但无济于事。

哎呀,我真傻。如今,随着所有 IDE 魔法的出现,您忘记了如何在 CLI 上启动 Java 程序。

您不能将 -jar-cp 组合在一起,即您不能将额外的 JAR 放在带有 -jar 的类路径上。

因此,要解决此问题,您需要 java -cp ... liquibase.integration.commandline.Main --classpath=...