2021-10-14
14-Oct-2021 14:36:56.789 信息 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.ApplicationContext.log No Spring WebApplicationInitializer types detected on classpath
14-Oct-2021 14:36:57.393 信息 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.ApplicationContext.log Initializing Spring root WebApplicationContext
14-Oct-2021 14:37:41.396 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.listenerStart 异常将上下文初始化事件发送到类的侦听器实例.[com.mdiaf.listener.PasApplicationListener]
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'selfTestNotificationCommand': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.fc.kcm.api.self_Test_Service.service.SelfTestNotificationService com.fc.kcm.notification.controller.SelfTestNotificationCommand.selfTestNotificationService; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.fc.kcm.api.self_Test_Service.service.SelfTestNotificationService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
此次问题的原因被找到:
出错发生在下图所示的代码 红色标记 部分:
接口“SelfTestNotificationService”上加了“Autowired”注解,而其实现类“SelfTestNotificationServiceImpl”并未加“@Service”注解,
所以在加载过程中,“SelfTestNotationServiceImpl”没有被加载进来,出现以下报错
“一个或多个listeners启动失败,更多详细信息查看对应的容器日志文件”。
加上后问题解决。
18-Aug-2021 19:58:25.494 严重 [RMI TCP Connection(3)-127.0.0.1]
问题描述:该项目为导入项目,在导入后经过调试可正常运行,在git拉分支之后 或者 将war包复制到Tomcat webapps下手动启动Tomcat后在IDEA中build启动遇到以下报错,log:
org.apache.catalina.core.StandardContext.startInternal 一个或多个listeners启动失败,更多详细信息查看对应的容器日志文件
18-Aug-2021 19:58:25.495 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal 由于之前的错误,Context[/XXX_XXX_web_war_exploded]启动失败
[2021-08-18 07:58:25,568] Artifact XXXX:war exploded: Error during artifact deployment. See server log for details.
这个问题困扰了我很长时间也没解决,在网上找了很多方法,看了很多文章,也没有明白问题的根源是什么,但是找到了问题的解决办法。
以下摘抄了部分解释:
在网上找到的解释为:在项目部署运行环境
下,项目依赖的jar包没有导入到项目部署的环境
中,说白话就是部署环境中缺少jar包
网上所给解决方案:把缺少的jar包导入即可,WEB-INF目录下新建lib
文件夹,右键选择Add copy of
-->Library File
,将项目所有需要的依赖添加即可
我的解决方法如下:
最终追踪到以下目录D:\XXX_Project\项目名\含有target的文件名\target\项目名\WEB-INF
删掉文件夹“WEB-INF”,重新启动IDEA,问题就解决了,之后在拉分支也没有遇到这样的问题。(注:重新启动项目后,被删掉的文件都还会自动生成,对项目无影响。)
下图为WEB-INF目录下的文件,通过目录可看出,出问题的根源应该在时间最近发生变化的文件夹中(因为这些文件夹更新过后问题解决了)。
删掉“WEB-INF”文件夹,再重新启动,项目能正常运行,这也可以印证,部署环境缺少jar包这个原因。
IDEA会重新编译项目,加载新的jar包,部署到“WEB-INF”文件夹下,这样就解决了缺少jar包的问题。
后续:
昨天(2021-09-08)在Git拉过项目后又出现了该报错提示,同时查看了详细的Tomcatlog记录,按照上文所写的步骤操作了一遍(删掉文件夹“WEB-INF”,重新启动IDEA),并没有解决问题。
然后有查看了一下Tomcat的log:No qualifying bean of type [controller.] is defined(当时没有照抄完整log记录)
Injection of autowired dependencies failed; nested exception is org.springfr
但是问题的原因很明显,是因为缺少依赖,本地没有包,bean创建失败等原因造成的。
最后,重新拉了Git,更新了maven,然后重新创建部署,就解决了问题。
这次错误的出现让我对这个异常有了更深的理解: 缺包,解决包问题,一般就能解决问题。
可能有很多原因会造成缺包,导致这样的问题出现。关键是想办法解决这些导致缺包的问题。
首先应该停掉Tomcat,再重启。