1.在进行 注解+XML 方式整合三层架构事出现此问题
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [/Volumes/PS2000/Java/SpringProject/micro-shop/spring-annotation-practice-03/target/classes/com/jackchen/dao/._StudentDao.class]
2.在进行 注解+配置类 方式整合三层架构时出现此问题
org.springframework.context.support.AbstractApplicationContext refresh警告: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.jackchen.JavaConfig]org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.jackchen.JavaConfig]
3.产生原因和解决方法可参考此博主的博客
BeanDefinitionStoreException产生原因及解决方案
4.经过上述方法的尝试也没有解决的话,请看下面
经过多次尝试,我发现代码是没有问题的,但是有一个问题我之前没注意,由于我的mac存储空间不大,我把Java项目存到了外接硬盘上(我不知道大家是不是和我一样),然后在构建1,2这两个maven项目的时候一直出现上述错误。经过多次检查代码,我确定绝对不是代码的缘故,然后我尝试把这两个maven项目保存在电脑磁盘上,然后执行成功,没有报错。我猜有可能是权限问题,也有可能是有些文件存在外接硬盘上会产生其他文件(如
._StudentDao.class
),所以以后如果遇到类似错误,可以往这方面考虑,是不是因为文件在外接硬盘的原因。我找了半天的错误,纠结了半天,最终尝试成功,具体什么原因我不太清楚,仅个人观点,希望对大家有帮助。(头疼,学习之路道阻且长,加油)
5.关于控制器报错信息为:Failed to read candidate component class
在反复检查代码不存在问题后意识到可能是版本兼容问题,但这个跟上面的问题关系不大,我分别用jdk8和jdk17测试,都能通过。
<!--jdk8版本-->
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.25.RELEASE</version>
</dependency>
<!--jdk17版本-->
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.0.6</version>
</dependency>
Spring官网的Spring Framework与JDK版本对应关系
Spring Framework 6.0.x:JDK 17-21
Spring Framework 5.3.x:JDK 8-19
Spring Framework 5.2.x:JDK 8-15
Spring Framework 5.1.x:JDK 8-12
Spring Framework 5.0.x:JDK 8-10
Spring Framework 4.3.x:JDK 6-8