2017-10-25 6 views
1

私は、次のコマンドを実行しています:LiquiBaseをコマンドラインエラー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 

をしかし、私はエラーにLiquiBaseを実行

予期しないエラーを取得しています:org.yaml.snakeyamlを。 Yaml

他の理由で私はエラーが発生しています。私が使用しているsnakeymlライブラリが適切なライブラリであるかどうかをどのように知ることができますか?

編集: @bilakのおかげで私は--logLevel =デバッグフラグを追加しましたが、まだあまり情報 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 

だからそれは接続して、間違いなくエラーが間違ったorg.yamlに関連しています。 snakeyaml.Yaml私が推測する 1.クラスパスは役に立ちません 2.私が使用しようとしているバージョンは適切ではありません

+0

内LiquiBaseをを実行していたので、それは私のために完全に大丈夫だったが、 '--logLeve = DEBUG'を指定し、より多くの情報LiquiBaseをコマンドで何 – bilak

+0

を得ることができるかどうかを確認してみては?それはLinux上でdebパッケージか、それとも何の下で実行していますか? – bilak

+0

と、どのバージョンのliquibaseを使用していますか – bilak

答えて

0

どうやらsnakeyaml.jarは何とかclasspathに追加する必要があります。
--classpath liquibaseの旗もjavaの-cpも私にとっては役に立たなかった。私が実行した最速の方法は、ドライバーとyamlのジャーをjre/lib/ext/に置くことです。
私はドッカーコンテナ