故障现象
在macOS中运行项目可以正常启动,但是经过maven打包jar后运行一直报文件找不到:
java.io.FileNotFoundException: class path resource [Users/zl/Projects/gps/jtmanager/target/jtmanager-0.1.0/jtmanager-0.1.0.jar/db/changelog/2020/db-ddl.xml] cannot be resolved to URL because it does not exist
liquibase主配置文件
<includeAll path="classpath:db/changelog/2020" relativeToChangelogFile="false"/>
SpringBoot相关配置文件
@Bean
public SpringLiquibase liquibase(@Autowired @Qualifier("masterSource") DataSource dataSource) {
SpringLiquibase liquibase = new SpringLiquibase();
liquibase.setDataSource(dataSource);
//指定changelog的位置,这里使用的一个master文件引用其他文件的方式
liquibase.setChangeLog("classpath:db/master.xml");
liquibase.setContexts("dev,test,prod,default");
liquibase.setShouldRun(true);
liquibase.setResourceLoader(new DefaultResourceLoader());
liquibase.setDatabaseChangeLogTable("db_changelog");
liquibase.setDatabaseChangeLogLockTable("db_changelog_lock");
return liquibase;
}
项目路径
但令人费解的是在linux中启动一切正常。
问题原因:
根据错误提示应该是路径获取的时候没有获取到争取的路径导致,因为正确的应该是[/Users/zl…],而提示中是[Users/zl…],少了根路径/。
解决:
未解决,在linux中运行正常就暂时不管他了,有时间再来解决,估计是liquibase的bug。