最近要把在eclipse上测试没问题的项目打成war包,部署到linux服务器上测试,启动linux上的tomcat后,查看tomcat的catalina.out文件,发现报错,遇到如标题所述的问题,百度的解决方案如下:
需要在pom.xml中追加如下配置:
......
<build>
......
<!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
......
</build>
......
但是项目依然报标题的错。查看我项目的目录结构,如下:
此时去查看tomcat中的web-inf下的classes文件夹,查看上面报错的查找不到beans文件是否存在于tomcat中,如果不存在,说明原因在这里。
找到原因所在:我百度出来的配置信息只帮我把*.properties和*.xml的文件扫描了,但是由于我项目的特殊性,resources目录下还存在其他扩展名的配置文件,所以正确的配置信息应该是:
......
<build>
......
<!-- 上生产服务器需将<resources>标签的配置放开 -->
<!-- 如果不添加此节点,mybatis的mapper.xml文件、*.dtd等文件都会被漏掉,tomcat启动就报错。 -->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.dtd</include>
<include>**/*.xls</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
......
</build>
......
pom.xml中添加上述配置,然后在eclipse中maven clean、maven build、maven install 重新打包,将tomcat中原先部署的项目删掉(关闭tomcat进程,在tomcat目录下,rm -rf logs/※、rm -rf bin/logs/※、rm -rf work/※,删除webapps下的war包及war包解压后的文件夹),然后重新部署新的war包,会发现所有文件都部署到了tomcat中,项目完美运行。