记一次在Windows下通过tomcat下bin目录的startup.bat启动服务失败的惨痛经历
疫情期间和同事共同开发一个项目的升级改造,项目的初始版本是同事直接放在tomcat中打包过来的,说是通过v*n连上公司数据库可以直接启动,但是每次启动都报错,具体报错信息如下:
ERROR: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.mybatis.spring.mapper.MapperScannerConfigurer#0' defined in ServletContext resource [/WEB-INF/spring/app-service-server.xml]: Cannot resolve reference to bean 'sqlSessionFactory_' while setting bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory_' defined in ServletContext resource [/WEB-INF/spring/app-service-server.xml]: Cannot resolve reference to bean 'dataSource_' while setting bean property 'dataSource'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource_': Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: Name [FIN_DS] is not bound in this Context. Unable to find [FIN_DS].
根据错误提示在网上搜索了很多,大多都是说jdk版本不匹配导致的错误,于是开始修改jdk环境变量配置,包括删除windows/system32下的,在tomcat的setclasspath.bat中指定具体的jdk环境变量,环境变量已经改好了,但启动还是这个报错。。。。。没辙了
放了一天,第二天又启动,在打印台看到如下这些信息
发现这个CATALINA_HOME的地址和我启动的不一致,于是在环境变量里边看到之前配置过的tomcat环境变量,啊,天杀的,全部统统删掉,再启动就好了,原来是启动时一直读取到系统的环境变量,启动的是另外一个tomcat服务
反思:遇到报错信息,第一时间应首先找日志信息,从日志信息中去找错应该是最便捷之路!