项目场景:
最近开发一个新功能,在创建基本项目结构时,遇到了一个BUG。
问题描述
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘bizEntityManagerFactoru’ defined in ServletContext resource [/WEB-INF/spring.xml]: Invocation of init method failed; nested exception is org.hibernate.jpa.boot.archive.spi.ArchiveExeption:Could not build ClassFile
翻译
org.springframework.beans.factory.BeanCreationException:使用ServletContext资源[/WEB-INF/spring.xml]中定义的名称“bizEntityManagerFactoru”创建bean时出错:调用init方法失败;嵌套异常是org.hibernate.jpa.boot.archive.spi.ArchiveExeption:无法生成ClassFile
原因分析:
找了很多文章,都没有解决,网上大部分是说@id注解引入的依赖问题,这里错误的引入了
import org.springframework.data.annotation.Id;
而实际应该引入的是
import javax.persistence.Id;
修改一下,就可以正常使用了。
因为我项目中没有用到此类注解,所以此方案行不通。就想到是不是因为一些注解引入包的问题,顺着此思路,挨个试一下实体类中的注解,果然找到了问题。
解决方案:
最终发现是:import org.apache.commons.collections.CollectionUtils
包在此项目中引入有问题,大概率是因为包的版本问题。
替换为import org.apache.commons.collections4.CollectionUtils
就解决了此问题。
项目中是使用了CollectionUtils.isNotEmpty(list)
用来判断list是否为空。