Liquibase:收到"文件不存在" changelog.xml存在文件时的异常

时间:2016-05-12 16:46:28

标签: java mule liquibase

我正在尝试实现java触发的liquibase数据库更新。

我有以下代码:

java.sql.Connection connection = openConnection(eventContext); 
Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(connection));
String changelog = UpgradePanDatabase.class.getResource("/liquibase/db.changelog.xml").getPath();
Liquibase liquibase = new liquibase.Liquibase(changelog, new ClassLoaderResourceAccessor(), database);
liquibase.update(new Contexts(), new LabelExpression());
connection.close();

但是我收到以下ChangeLogParseException:

  

/Users/ntregillus/myApp/.mule/apps/myApp/classes/liquibase/db.changelog.xml不存在

但是我知道文件存在,我可以复制路径,直接从终端打开它,也可以在文件资源管理器中找到它。为什么Liquibase无法找到这个文件?

2 个答案:

答案 0 :(得分:5)

最可能的原因是更改日志未被打包为jar文件中的资源。检查打包的jar的结构,而不是本地开发人员的工作副本。

答案 1 :(得分:0)

UpgradePanDatabase.class.getResource(" /liquibase/db.changelog.xml")

它将搜索到" UpgradePanDatabase" .class

检查是否 Absolute_path_of_FolderContaing_UpgradePanDatabase.class + / liquibase/db.changelog.xml>与IDE中的相同。

但在你的情况下,它应该是Wrt to" classes"夹 尝试调试 - 使用SOP-" String changelog"说。这可能有所帮助。