Intellij 周六晚上开发一个简单web项目的,使用tomcat打包部署,死活也无法部署成功,和这个问题怼了6个小时,也没搞清楚具体为何不能访问页面,可是好在最后仍是找了个方法把问题解决了。如下是问题的一些问题的描述和解决办法,若是你也遇到了类似问题,但愿能够给你帮助:web
问题描述:spring
1:部署看起来是成功的,启动的时候控制台不报任何错误,显示的是应用启动成功,可是浏览器访问无效,甚至就连配置的index.jsp也法自动访问;浏览器
2:部署时出现了out文件夹,每次从新部署时会更新这个文件夹中的文件;spring-mvc
3:正常的部署在部署时会加载相关配置,通常来讲在“Artifact SimplestSpringMVCDemo:war: Artifact is being deployed, ”,这一句后面,是tomcat解析web.xml时的日志输出,相似这样:tomcat
(在两行蓝字中间时Tomcat输出的相关信息)mvc
可是我周六进行部署的时候,tomcat在两行蓝色之间,并无打印出任何信息。app
问题解决过程:eclipse
用过Intellj的童鞋应该都知道,在Intellij里面部署一个tomcat项目是简单的,只要配置一下tomcat的基本配置,而后选择添加要部署的artifact(也就是war包)就能够了。jsp
可是一直部署不上,期间试过不少办法,也用本身的方式尝试改web.xml的配置,故意将web.xml的配置改错验证是否真的读取了这个配置文件(读取了,可是tomcat没有进行进一步的解析,也不知道为何);也查看了Intellij自动生成的tomcat配置文件查看路径指向的部署的项目(编译后的文件)是否存在,可是一直没有找到正确的解决办法。ide
后来终于在stacak overflow上找到了一位仁兄的建议,说是重启电脑后把Intellij配置的tomcat项目删掉再添加进来就能够了,试了一下,果真OK。
解决方案总结:
重启电脑,将Tomcat部署的项目删掉,从新添加这个web项目。
-----------------------------------------------------分割线,赶时间的不用继续看下去了--------------------------------------------------------------------------------------------------------------------------------------------------------------------
对问题的分析:
在解决该问题以后我回顾了一下,发如今成功部署时未产生out文件夹;
通过改动web.xml屡次测试发现,若是将xml文件中的某个标签改动,使之不能成对匹配(以下图),那么控制台就会报错。不然不论如何改动web.xml这个文件(例如使用未定义的标签,改动spring配置文件使之错误)。说明web.xml仍是被解析了的,可是其中的内容没有被tomcat的容器处理,也就是说tomcat读了,可是没有调用具体的流程去处理它。
综合这两点考虑,是否是由于idea生成out文件夹并依据这个部署项目的话,tomcat没法正确读取项目的配置内容呢?
因而,我又想起了当年使用eclipse部署tomcat项目的时候,默认配置也是额外生成一个单独的web项目,相似这样
经过conf里xml配置文件的内容指定去哪里读取web项目的全部文件:
路径(好久不用eclipse了,这个使idea的配置文件路径):IntelliJIdea2017.3\system\tomcat\Unnamed_SimplestDemos_5\conf\Catalina\localhost
<?xml version="1.0" encoding="UTF-8"?>
<!--docbase指定了项目发布的目录,path指定了浏览器访问的路径--> <Context docBase="D:\Programming\GithubRepository\SimplestDemos\SimplestSpringMVC\out\artifacts\SimplestSpringMVC_Web_exploded" path="/spring-mvc-study" reloadable="true" source="org.eclipse.jst.j2ee.server:spring-mvc-study" />
也是莫名其妙出问题,最后将eclipse里tomcat的配置改成部署到tomcat的web-app目录下,启动tomcat的全部项目才成功的。
因此是否是这种额外生成一个项目目录(而非war包)的方式没法被tomcat正确处理呢?
出于时间的关系,我没有继续进行探究了。不知道有没有大神明白这其中的原理呢?若是您知道这其中的曲折,请您留言或者联系个人邮箱ct_csu@foxmail.com,在此先多谢了!