文章目录


日志报错:

	org.springframework.beans.factory.BeanDefinitionStoreException: Could not resolve bean definition resource pattern [classpath:spring/applicationContext-*.xml]; nested exception is java.io.FileNotFoundException: class path resource [spring/] cannot be resolved to URL because it does not exist

前面是分析问题的原因,想直接看解决办法,跳转到 目录“解决办法” 即可

war和war exploded区别

war模式:将WEB工程以包的形式上传到服务器 ;
war exploded模式:将WEB工程以当前文件夹的位置关系上传到服务器;

选择的方式不同,会影响 tomcat catalina.base
这里默认选择的是war exploded,已经选了war模式的话可以在配置里面再修改:
在这里插入图片描述

出现标题所示bug的话可以先参考一下这篇博文:
Error during artifact deployment. See server log for details.

这里我的解决方法是根据日志文件的报错信息(报错文件不存在),定位到项目所在的路径
在这里插入图片描述

在这里插入图片描述
一开始以为是上面的路径,然后发现并不是,项目是放在target文件夹下的:
为什么是在target文件夹下呢?看下面的图片
在这里插入图片描述

CATALINA_HOME是Tomcat的安装目 录,CATALINA_BASE是Tomcat的工作目录

进入工作目录,然后像我这样一直定位到下图localhost文件夹下的xml文件,会发现它把docBase定位到了target目录
在这里插入图片描述
为什么要这样定位到这里呢,因为在下载的tomcat的server.xml里的配置信息是这样的:
在这里插入图片描述

解决办法

上面的tomcat路径问题大概算是解决了吧,然后现在来解决实际问题:
进入target目录:
在这里插入图片描述
发现之前项目开发时写的一些xml文件并没有在里面反映出来,所以导致tomcat报错找不到***.xml文件,我的解决办法是在pom.xml文件里加入以下配置,把xml文件加载进target(最粗暴的方式是直接把xml文件复制粘贴进target的相应位置)

 <build>
    <finalName>写自己的项目名字,比如HelloWorld</finalName>
    <!--在IDEA中maven 默认编译的时候   只加载src/main/java里面的java文件到target/classes,其他文件会被忽略-->
    <!--这时,比如Mybatis的Mapper.xml文件就不能被加载进去,也就是不能映射成功-->
    <!--下面配置能解决这个问题-->
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
      </resource>
    </resources>
  </build>

然后这个时候重新运行项目,发现问题解决了

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐