代码之家  ›  专栏  ›  技术社区  ›  Mad Scientist

无法使用命令行运行liquibase

  •  13
  • Mad Scientist  · 技术社区  · 6 年前

    我想使用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

    2 回复  |  直到 6 年前
        1
  •  22
  •   sorifiend    6 年前

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

    请参阅下面的bug报告链接,其中另一个用户有相同的问题。

    似乎3.6.1在lib文件夹中仍然缺少slf4j-api-1.7.25 我仍然会收到一个通过cli调用liquibase的错误。

    您有三种选择:

    1. 自己去图书馆 [here] .
    2. 等待修补的 版本(可能自己提交修复)。
    3. 恢复到旧版本(3.5.5应该有效)

    错误报告见此处: https://liquibase.jira.com/browse/CORE-3201

        2
  •  1
  •   Alan Hernandez    5 年前

    必须将此库添加到类路径:

    在我的例子中,我使用的是SpringBootLiquibase集成,所以,这里是我的 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'
            }
        }
    }
    

    它是从 liquibase-gradle-plugin