把activiti6.0版本中的子项目activiti-admin下载下来想在本地运行,运行老是报错说实例化liquibase异常,因为这个项目使用liquibase工具初始化数据库的,如果它失败了数据库就没有了,项目就不能运行了。
@Bean(name="liquibase")
public SpringLiquibase liquibase(DataSource dataSource) {
log.debug("Configuring Liquibase");
SpringLiquibase liquibase = new SpringLiquibase();
liquibase.setDataSource(dataSource);
liquibase.setChangeLog("activiti-admin/src/main/resource/META-INF/liquibase/dbChangelog.xml");
liquibase.setContexts("development, production");
return liquibase;
}
错误如下
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'liquibase' defined in class com.activiti.conf.DatabaseConfiguration: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Cannot resolve ServletContextResource without ServletContext
一开始以为liquibase配置错误,一直找这个工具的相关资料,但是奈何网上资料少的可怜,应该是比较小众的工具,但是创建了一个测试项目测试liquibase这样配置没有问题。
后来改变思路,调试Spring的源码,看Spring创建是怎么创建bean的
然后发现liquibase的beandefinition中的class为空,这样就无法通过反射根据类路径创建对象了,然后我有去看Spring加载beandefinition的源码,然后。。。。。。。。。。
我人没了,越看越蒙蔽,类都快找不到了,debug都要不知道跳到哪里了,哪位大佬知道麻烦解答一下