【问题标题】:Unable to run liquibase via cmd无法通过 cmd 运行 liquibase
【发布时间】:2019-01-28 14:55:31
【问题描述】:

我正在使用 DB2 V10.5 (windows),尝试使用 Liquibase。

我正在使用 liquibase-3.5.3-bin 。我已经使用以下参数设置了 liquibase.properties 文件。

classpath=lib/db2jcc.jar
changeLogFile=liquibase-3.5.3-bin/003_changelog.xml
username=random_auth
password=random
url=jdbc:db2://host/dbname
driver=com.ibm.db2.jcc.DB2Driver

我无法使用多个 jar 设置类路径。所以当我运行时

java -jar liquibase.jar generateChangeLog

我收到错误缺少snakeyaml jar

我为类路径尝试过的选项:

lib/*
lib/db2jcc.jar:lib/snakeyaml-1.17.jar

但不知何故它不起作用。

有人可以建议我如何设置类路径,以便在我运行 Liquibase 时包含 lib 中存在的所有 jar。

【问题讨论】:

    标签: liquibase


    【解决方案1】:

    Windows 中的路径分隔符是; 而不是:

    所以你的liquibase.properties 应该是这样的:

    classpath=lib\db2jcc.jar;lib\snakeyaml-1.17.jar
    

    这要求lib 是运行 Liquibase 时当前目录的子目录。


    如果这些库位于 Liquibase 目录的 lib 目录中,则提供的 liquibase.bat 将自动包含该目录中的所有 jar。只需运行liquibase.bat 而不是使用java -jar ...

    【讨论】:

    • 仍然无法正常工作。收到此错误信息 2018 年 8 月 22 日下午 5:32:liquibase:无法使用类 liquibase.serializer.core.json.JsonChangeLogSerializer 作为 Liquibase 服务,因为 org.yaml。 snakeyaml.representer.Representer 不在类路径中 INFO 8/22/18 下午 5:32:liquibase:不能使用类 liquibase.serializer.core.yaml.YamlChangeLogSerializer 作为 Liquibase 服务,因为 org.yaml.snakeyaml.representer.Representer不在类路径 Liquibase 'generateChangeLog' 成功
    • liquibase-3.5.3-bin\lib:lib 存在于包含可执行 jar 的目录中。是否需要对当前环境变量进行任何更改,目前我只将 LIQUIBASE_HOME 设置为根目录。
    • 如果您指定它,它必须是 当前 目录的子目录,而不是包含可执行文件的目录。但是如果你把所有的 jars 放到 liquibase-3.5.3-bin\lib 中然后简单地运行liquibase.bat(不要使用java -jar)它会自动将所有的 jars 包含在lib 目录中。
    • 您可能会做的一件事是删除 liquibase.bat 顶部的行,上面写着 @echo off 这将导致执行的每个命令都显示在控制台上,让您有机会获得更深入地了解正在发生的事情。了解正在生成的实际命令是什么非常有用。
    • 感谢您的意见。使用 liquibase.bat 运行良好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 2017-10-14
    • 2010-10-16
    • 2021-05-18
    • 2016-06-03
    相关资源
    最近更新 更多