Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean wit

博主碰到一个常见错误,发现UserMapper.out.xml文件非自己所写,将其删除后问题解决。原因是启动项目时直接点击run快捷按钮,若下方是xml文件,会直接运行该xml文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 今天碰到一个错误,很常见的一个错
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'tokenFilter': Unsatisfied dependency expressed through field 'tokenService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'tokenServiceJWTImpl': Unsatisfied dependency expressed through field 'logService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sysLogServiceImpl': Unsatisfied dependency expressed through field 'sysLogsDao'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sysLogsDao' defined in file [D:\workspace-sts\boot-security\target\classes\com\boot\security\server\dao\SysLogsDao.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [org/mybatis/spring/boot/autoconfigure/MybatisAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:\workspace-sts\boot-security\target\classes\mybatis-mappers\UserMapper.out.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error creating document instance.  Cause: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 文件提前结束。
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:587)
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:91)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:373)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1348)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:578)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:501)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204)
	at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:225)
	at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addAsRegistrationBean(ServletContextInitializerBeans.java:181)
	at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addAsRegistrationBean(ServletContextInitializerBeans.java:176)
	at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addAdaptableBeans(ServletContextInitializerBeans.java:158)
	at org.springframework.boot.web.servlet.ServletContextInitializerBeans.<init>(ServletContextInitializerBeans.java:80)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.getServletContextInitializerBeans(ServletWebServerApplicationContext.java:250)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.selfInitialize(ServletWebServerApplicationContext.java:237)
	at org.springframework.boot.web.embedded.tomcat.TomcatStarter.onStartup(TomcatStarter.java:54)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5245)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1421)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1411)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
  1. 仔细看发现Failed to parse mapping resource: 'file [D:\workspace-sts\boot-security\target\classes\mybatis-mappers\UserMapper.out.xml]';
  2. UserMapper.out.xml这个文件不是自己写的 删除之
    在这里插入图片描述
  3. 成功在这里插入图片描述
  4. 原因就是启动项目时,我是直接点击run的快捷按钮
    在这里插入图片描述
    如果下方是xml时,会变成如下,直接run的是xml文件
    在这里插入图片描述
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'trafficReviseFilterRegistration' defined in class path resource [com/alibaba/nacos/naming/web/NamingConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.web.servlet.FilterRegistrationBean]: Factory method 'trafficReviseFilterRegistration' threw exception; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'trafficReviseFilter': Unsatisfied dependency expressed through field 'serverStatusManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serverStatusManager': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'persistentConsistencyServiceDelegate' defined in file [D:\workspace-git\nacos-2.2.3-1\nacos-2.2.3\nacos-2.2.3\naming\target\classes\com\alibaba\nacos\naming\consistency\persistent\PersistentConsistencyServiceDelegateImpl.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.alibaba.nacos.naming.consistency.persistent.PersistentConsistencyServiceDelegateImpl]: Constructor threw exception; nested exception is java.lang.UnsatisfiedLinkError: C:\Users\User\AppData\Local\Temp\librocksdbjni4054513922061542865.dll: Can't find dependent libraries
03-29
<think>嗯,用户遇到了一个Spring的BeanCreationException,看起来跟Nacos相关。首先,我需要理解错误堆栈的结构。错误信息很长,层层嵌套,得拆开来看。最顶层的异常是BeanCreationException,发生在创建名为'trafficReviseFilterRegistration'的Bean时,这个Bean定义在NamingConfig类里。失败的原因是工厂方法实例化失败,接着是BeanInstantiationException,指出无法实例化FilterRegistrationBean,因为工厂方法抛出了异常。 往下看,发现UnsatisfiedDependencyException,依赖的'serverStatusManager'有问题。再深入,是'serverStatusManager'在创建时,资源注入失败,导致另一个Bean 'persistentConsistencyServiceDelegate'的创建问题。这里提到了构造函数实例化失败,原因是构造函数抛出了UnsatisfiedLinkError,找不到依赖的DLL库,具体是librocksdbjni相关的dll文件。 这时候,我应该回想一下常见的这类错误。UnsatisfiedLinkError通常和本地库(JNI)有关,可能是库文件缺失或者路径不对。用户的环境是Windows,所以Temp目录下的dll加载失败。可能的问题点有几个:RocksDB的依赖没有正确安装,或者系统缺少对应的运行时库,比如Visual C++ Redistributable。另外,可能涉及到环境变量或者文件权限的问题。 接下来需要一步步分析可能的原因。首先,确认用户是否在项目中正确引入了RocksDB的依赖,比如在Maven或Gradle中是否有相关的配置。其次,检查系统是否安装了必要的C++运行时库,比如VC++ 2015或更高版本。还有,检查dll文件是否存在,或者是否被其他程序占用导致无法加载。另外,可能需要设置Java的库路径,确保JVM能找到这些本地库。 用户可能是在运行或编译Nacos时遇到这个问题,特别是在Windows环境下。可能他们从源码构建,或者使用了特定版本的Nacos。需要建议他们检查依赖项,安装必要的运行时库,或者尝试清理临时文件重新构建。如果用户的环境有问题,比如缺少VC++库,可能需要下载安装。另外,查看Nacos的官方文档或社区是否有类似问题的解决方案,比如特定版本是否需要额外的配置步骤。 最后,整理这些思考步骤,形成清晰的解决方案,分点列出可能的原因和对应的解决办法,帮助用户逐步排查问题。需要确保回答结构清晰,步骤明确,同时用中文表达,符合用户的要求。</think>这个错误是典型的 Spring Boot 应用启动时依赖注入失败的链式异常,与 Nacos 的 RocksDB 本地库依赖有关。以下是逐层分析及解决方案: **一、异常链核心路径** ``` BeanCreationException: trafficReviseFilterRegistration → BeanInstantiationException: FilterRegistrationBean 工厂方法失败 → UnsatisfiedDependencyException: trafficReviseFilter 依赖 serverStatusManager → BeanCreationException: serverStatusManager 依赖注入失败 → BeanCreationException: persistentConsistencyServiceDelegate 构造函数异常 → UnsatisfiedLinkError: 找不到 librocksdbjni.dll 的依赖库 ``` **二、根本原因分析** $$ \text{UnsatisfiedLinkError} \Rightarrow \text{JNI本地库加载失败} $$ 具体表现为 Windows 系统找不到 `librocksdbjni.dll` 所需的运行时依赖(如 C++ 可再发行组件包) **三、分步解决方案** 1. **检查 VC++ 运行时库** - 安装 [Visual C++ Redistributable 2015+](https://aka.ms/vs/16/release/vc_redist.x64.exe) - 验证方式:控制面板 → 程序 → 查看已安装的更新 2. **配置 RocksDB 环境** ```xml <!-- Maven 需包含正确版本 --> <dependency> <groupId>org.rocksdb</groupId> <artifactId>rocksdbjni</artifactId> <version>6.29.5</version> <!-- 匹配Nacos版本 --> </dependency> ``` 3. **设置 JVM 参数(Windows)** ```bash -Djava.library.path="C:\path\to\rocksdb\dll" ``` 4. **临时目录权限检查** - 确保 `C:\Users\User\AppData\Local\Temp` 有写入权限 - 尝试手动清理 Temp 目录 **四、验证步骤** 1. 使用 Dependency Walker 检查 `librocksdbjni.dll` 2. 执行 `ldd librocksdbjni.dll`(Linux)或 `dumpbin /dependents`(Windows) 3. 检查日志中是否出现 `Successfully loaded rocksdb jni library` **五、特殊场景处理** 若使用 Docker: ```dockerfile RUN apt-get install -y librocksdb-dev # Debian/Ubuntu RUN yum install -y rocksdb-devel # CentOS/RHEL ``` 该问题的本质是 $ \text{本地库依赖} \notin \text{系统PATH} $ 或 $ \exists \text{版本冲突} $,建议优先使用 Nacos 官方推荐的运行环境配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值