我正在尝试实现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无法找到这个文件?
答案 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"说。这可能有所帮助。