web-dev-qa-db-fra.com

Impossible d'exécuter la base de données avec la ligne de commande

Je veux utiliser liquibase mais quand je veux le laisser fonctionner avec la ligne de commande, cela se produit:

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

J'ai essayé liquibase-3.6.1 et maintenant liquibase-3.6.0

13
Mad Scientist

L'une des bibliothèques requises est manquante dans le dossier de la bibliothèque.

Voir le lien de rapport de bogue ci-dessous où un autre utilisateur a eu le même problème.

Il semble que 3.6.1 manque toujours slf4j-api-1.7.25 dans le dossier lib et je reçois toujours une erreur lors de l'invocation de liquibase via cli.

Vous avez trois options:

  1. Obtenez la bibliothèque vous-même [ici] .
  2. Attendez la version corrigée (soumettez peut-être un correctif vous-même).
  3. Revenir à une version plus ancienne (3.5.5 devrait fonctionner)

Voir ici pour le rapport de bogue: https://liquibase.jira.com/browse/CORE-3201

22
sorifiend

Vous devez ajouter ces bibliothèques à votre chemin de classe:

Dans mon cas, j'utilise l'intégration de la base de données Spring Boot, voici donc mon build.gradle configuration de la base de données

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'
        }
    }
}

C'est un extrait de plugin liquibase-gradle

1
Alan Hernandez