这段时间在进行软工课设,前两天构建一个Springboot项目的时候,启动遇到了问题报错如下
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springSecurityFilterChain' defined in org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.servlet.Filter]: Factory method 'springSecurityFilterChain' threw exception; nested
查看日志的报错原因如下:
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.servlet.Filter]: Factory method 'springSecurityFilterChain' threw exception;
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int)
查阅资料提供的大概解决思路都是与应用程序中的Spring Security模块有关。"BeanInstantiationException" 表示Spring无法创建 "javax.servlet.Filter" 类型的实例,并且错误的原因是 "springSecurityFilterChain" 工厂方法。
"java.lang.ExceptionInInitializerError" 嵌套异常指向Spring Security模块中某个类的静态初始化块存在问题。这通常发生在由于静态初始化期间未处理的异常导致类无法正确初始化时。
我尝试排查过代码块的问题,但是具体是没问题的,依赖配置后依然没有用。有人提示说的是JAVA9以上会出现的问题,于是乎我又装了JAVA8的版本,重构项目依旧没有问题,在一直排查过程中我发现问题的关键在于这个依赖是没有问题,因为设置了自动配置依赖,所以依赖定是能扫出来的,应该是启动的问题,在进行了长时间的挣扎,终于发现了问题的所在,太可恶了,缺少了这个依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.21</version>
</dependency>
太离谱了,竟然缺少这个依赖,按理说导入springboot-starter的依赖这个依赖是会自动导入的,为啥需要手动导入,否则就会启动出错呢,这个问题至今仍然没有思考清楚,但是加入这个依赖确实项目就跑起来了。