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
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:
Voir ici pour le rapport de bogue: https://liquibase.jira.com/browse/CORE-3201
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