比较来自世界各地的卖家的域名和 IT 服务价格

我无法使用命令行运行

我想使用 liquibase 但是,当我想让他与命令行一起工作时,会发生这种情况:


PS C:\Users\Ferid\Downloads\liquibase-3.6.0-bin> .\liquibase
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: ch/qos/logback/core/filter/Filter
at java.lang.Class.getDeclaredMethods0/Native Method/
at java.lang.Class.privateGetDeclaredMethods/Unknown Source/
at java.lang.Class.privateGetMethodRecursive/Unknown Source/
at java.lang.Class.getMethod0/Unknown Source/
at java.lang.Class.getMethod/Unknown Source/
at sun.launcher.LauncherHelper.validateMainClass/Unknown Source/
at sun.launcher.LauncherHelper.checkAndLoadMain/Unknown Source/
Caused by: java.lang.ClassNotFoundException: ch.qos.logback.core.filter.Filter
at java.net.URLClassLoader.findClass/Unknown Source/
at java.lang.ClassLoader.loadClass/Unknown Source/
at sun.misc.Launcher$AppClassLoader.loadClass/Unknown Source/
at java.lang.ClassLoader.loadClass/Unknown Source/
... 7 more


我试过了 liquibase-3.6.1, 现在 liquibase-3.6.0
已邀请:

风见雨下

赞同来自:

库文件夹中缺少其中一个必要的库。

请参阅下面的错误报告的链接,其他用户具有相同的问题。

看起来 3.6.1 仍然缺席 slf4j-api-1.7.25 在文件夹中 lib
, 我仍然收到一个电话错误 liquibase 穿过 cli.

你有三个选择:

为自己带走图书馆
https://www.slf4j.org/download.html
.

等待纠正
版本 /也许自己发送更正/.

返回旧版本 /3.5.5 必须工作/

请参阅此前错误报告:
https://liquibase.jira.com/browse/CORE-3201

奔跑吧少年

赞同来自:

您必须将这些库添加到您的 classpath:

https://mvnrepository.com/arti ... 1.2.3
https://mvnrepository.com/arti ... 1.2.3
在我的情况下,我使用集成 Spring Boot liquibase, 所以这是我的配置器
build.gradle

liquibase


buildscript {
dependencies {
classpath 'org.postgresql:postgresql:9.4.1211.jre7'
classpath 'org.liquibase:liquibase-core:3.6.3'
classpath "org.liquibase:liquibase-gradle-plugin:2.0.1"
}
}

plugins {
id 'org.springframework.boot' version '2.1.3.RELEASE'
id 'java'
id "org.liquibase.gradle" version "2.0.1"
}


dependencies {
liquibaseRuntime 'org.postgresql:postgresql:9.4.1211.jre7'
liquibaseRuntime 'org.liquibase:liquibase-core:3.6.3'
liquibaseRuntime 'org.liquibase:liquibase-groovy-dsl:2.0.1'
liquibaseRuntime 'ch.qos.logback:logback-core:1.2.3'
liquibaseRuntime 'ch.qos.logback:logback-classic:1.2.3'
}

def changeLog = "$projectDir/src/main/db/changelog.xml"
liquibase {
activities {
main {
changeLogFile changeLog
url 'jdbc:postgresql://localhost:5431/postgres'
username 'postgres'
password 'postgres'
}
}
}


这是一个摘录
https://github.com/liquibase/l ... lugin

奔跑吧少年

赞同来自:

我在版本中遇到了同样的问题
3.6.2

. 问题是 Liquibase 找不到必要的课程 /
ch.qos.logback.core.filter.Filter

- 只有其中一个,但还有其他人/. 普遍配方不存在,但高级的想法是找到 JARs 必要的类并将它们传输到命令行参数
-cp

. 它看起来有点难看,但这是最终工作的:


#!/bin/bash

M2_REPO=/home/raiks/.m2/repository
LIQUIBASE_CMDLINE='liquibase.integration.commandline.Main --changeLogFile=~/changelog-master.xml update'
# Feed all the required JARs to -cp
JAVA_CMD="java -cp $M2_REPO/org/liquibase/liquibase-core/3.6.2/liquibase-core-3.6.2.jar:$M2_REPO/org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5.jar:$M2_REPO/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar:$M2_REPO/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar $LIQUIBASE_CMDLINE"
echo $JAVA_CMD
eval $JAVA_CMD


请注意我使用
:

在 Linux, 尽管
;

将是必需的 Windows. 根据您的特定位置配置命令。 JAR.

此外,您可以将依赖项放在目录中,并在后面使用通配符指定它
-cp

:


$ java -cp "/home/raiks/liquibase-deps/*" liquibase.integration.commandline.Main --changeLogFile=~/changelog-master.xml update

要回复问题请先登录注册