Spring Liquibase尝试解析URL的文件路径

时间:2015-03-28 19:56:43

标签: spring liquibase

我像这样配置liquibase:

@Bean
public SpringLiquibase liquibase() {
    SpringLiquibase liquibase = new SpringLiquibase();
    liquibase.setDataSource(getConfiguredDataSouce());
    liquibase.setChangeLog("classpath*:config/liquibase/master.xml");
    liquibase.setContexts("development,test,production");
    LOG.debug("Configuring Liquibase");

    return liquibase;
}

我的master.xml文件:

<includeAll path="classpath*:/config/liquibase/changelog/" relativeToChangelogFile="false"/>

当我在Tomcat(7.0.50和8.0.20)上运行我的应用程序时,它会打印此异常:

Caused by: java.io.FileNotFoundException: class path resource [D:/proiecte/ALE MELE/Rezervari/target/Rezervari/WEB-INF/classes/config/liquibase/changelog/20150329182213.xml] cannot be resolved to URL because it does not exist
at   org.springframework.core.io.ClassPathResource.getURL(ClassPathResource.java:178)
at liquibase.integration.spring.SpringLiquibase$SpringResourceOpener.getResourcesAsStream(SpringLiquibase.java:109)
at liquibase.util.StreamUtil.singleInputStream(StreamUtil.java:181)
at liquibase.parser.core.xml.XMLChangeLogSAXParser.parseToNode(XMLChangeLogSAXParser.java:93)
... 73 more

该文件存在于该路径上,但它尝试(因为我不知道是什么原因)将其解析为URL。 有任何想法吗? :)

P.S。:Liquibase版本是3.2.2。

谢谢你, 特勤。

2 个答案:

答案 0 :(得分:0)

这可能与Liquibase Jira上的CORE-2186相同。尝试使用从Ant运行的includeAll时,我会遇到相同的症状。

关于该bug的原始记者添加了一个建议的修复程序,尽管只是对报告的评论。我还没有尝试过。

答案 1 :(得分:0)

对我来说,问题在于斜线(本地,MacOS):

“ classpath:config / liquibase / changelog /”-效果很好。

“类路径:/ config / liquibase / changelog /”-不起作用。