2017-10-25 2 views
1

Ich Ausführung der folgende:liquibase Befehlszeile Fehler org.yaml.snakeyaml.Yaml

liquibase --classpath=./postgresql-42.1.4.jar:./snakeyaml-1.12.jar --changeLogFile=./src/main/resources/db/changelog/db.changelog-master.yaml --username=postgres --password=mysecret --url=jdbc:postgresql://localhost:5432/mydatabase --driver=org.postgresql.Driver update 

Aber ich erhalte eine Fehlermeldung

Unerwarteter Fehler läuft Liquibase: org.yaml.snakeyaml. Yaml

Und keine anderen Verweise auf, warum ich den Fehler habe. Woher weiß ich, ob die von mir verwendete snakeyml-Bibliothek die richtige ist?

Edit: Dank @bilak I --logLevel = Debug-Flag, aber immer noch nicht viele Informationen D

EBUG 10/31/17 4:24 PM: liquibase: Connected to [email protected]:postgresql://localhost:5432/mysdatabase 
DEBUG 10/31/17 4:24 PM: liquibase: Setting auto commit to false from true 
DEBUG 10/31/17 4:24 PM: liquibase: Executing QUERY database command: select count(*) from public.databasechangeloglock 
DEBUG 10/31/17 4:24 PM: liquibase: Executing QUERY database command: select count(*) from public.databasechangeloglock 
DEBUG 10/31/17 4:24 PM: liquibase: Executing QUERY database command: SELECT LOCKED FROM public.databasechangeloglock WHERE ID=1 
DEBUG 10/31/17 4:24 PM: liquibase: Lock Database 
DEBUG 10/31/17 4:24 PM: liquibase: Executing UPDATE database command: UPDATE public.databasechangeloglock SET LOCKED = TRUE, LOCKEDBY = '172.17.0.1 (172.17.0.1)', LOCKGRANTED = '2017-10-31 16:24:07.734' WHERE ID = 1 AND LOCKED = FALSE 
INFO 10/31/17 4:24 PM: liquibase: Successfully acquired change log lock 
DEBUG 10/31/17 4:24 PM: liquibase: Release Database Lock 
DEBUG 10/31/17 4:24 PM: liquibase: Executing UPDATE database command: UPDATE public.databasechangeloglock SET LOCKED = FALSE, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1 
INFO 10/31/17 4:24 PM: liquibase: Successfully released change log lock 
Unexpected error running Liquibase: org.yaml.snakeyaml.Yaml 

SEVERE 10/31/17 4:24 PM: liquibase: org.yaml.snakeyaml.Yaml 
java.lang.NoClassDefFoundError: org/yaml/snakeyaml/Yaml 
     at liquibase.parser.core.yaml.YamlChangeLogParser.parse(YamlChangeLogParser.java:23) 
     at liquibase.Liquibase.getDatabaseChangeLog(Liquibase.java:229) 
     at liquibase.Liquibase.update(Liquibase.java:202) 
     at liquibase.Liquibase.update(Liquibase.java:192) 
     at liquibase.integration.commandline.Main.doMigration(Main.java:1126) 
     at liquibase.integration.commandline.Main.run(Main.java:184) 
     at liquibase.integration.commandline.Main.main(Main.java:103) 
Caused by: java.lang.ClassNotFoundException: org.yaml.snakeyaml.Yaml 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
     ... 7 more 

So verbindet er hinzugefügt und auf jeden Fall wird der Fehler an den falschen org.yaml bezogen. snakeyaml.Yaml ich denke, 1. die classpath nicht 2. die Version helfen ich nicht geeignet zu verwenden ist versucht

+0

Versuch Liquibase lief '--logLeve = debug' zu spezifizieren und sehen, ob Sie – bilak

+0

weitere Informationen zu bekommen, was ist liquibase-Befehl? Ist es das Deb-Paket auf Linux oder was machst du darunter? – bilak

+0

und auch welche Version von liquibase verwenden Sie – bilak

Antwort

0

Offensichtlich snakeyaml.jar irgendwie zu classpath hinzugefügt werden muss.
Weder --classpath Flagge von Liquibase noch Java -cp hat für mich funktioniert. Der schnellste Weg, es zum Laufen zu bringen, ist, indem ich den Treiber und die Yaml-Gläser in jre/lib/ext/ platziere.
Es war für mich völlig in Ordnung, da ich in einem Docker Container