idea里nacos中集成seata报错,纪念一下
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'globalTransactionScanner' defined in class path resource [io/seata/spring/boot/autoconfigure/SeataAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.seata.spring.annotation.GlobalTransactionScanner]: Factory method 'globalTransactionScanner' threw exception; nested exception is java.lang.ExceptionInInitializerError
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:657) ~[spring-beans-5.2.13.RELEASE.jar:5.2.13.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:637) ~[spring-beans-5.2.13.RELEASE.jar:5.2.13.RELEASE]
等后面还有一堆依赖。
发现.BeanCreationException: Error creating bean with name 'globalTransactionScanner' defined in class path resource这类似的文字。我最开始想,这是依赖哪个需要的bean对象我没有注册嘛,还是包导入不成功,最后我查看了maven依赖,bean,service等注解发现并没有漏洞,导入的依赖也没有问题,那为什么找不到呢?
但是我们接着往下看
org.springframework.beans.factory.support.ConstructorResolver.instantiate
这个报错我也事第一次见,但我的大致理解就是,我的spring框架里的bean仓库在创建的时候,它解决不了我的bean,或者找不到我的bean,那么问题也可以出在这,那代码都是对的为什么会找不到呢?这里我就想会不会事版本的问题,于是我去官网看了下springboot版本,springframework版本的关系以及和jdk的关系
springframework与jdk的对应关系
springboot版本与springframework版本的对应关系
1.几用的太少了,这里直接贴2以后的
解决问题
最后我发现我的jdk是17,而我的框架是5.2.13的springframework,对应的也就是8-15版本的jdk,
最后更改一下自己的项目的jdk就可以正确找到对应的bean了