IDEA中项目部署无任务异常抛出,且首页404

相信很多使用IDEA的用户都碰到题目说的情况,启动时控制台一切正常,浏览器首页显示404。这里我写了一个微型web项目参见spring/spring-mvc模块,
采用全注解的方式,先创建一个artifact,然后"edit configuration" -> “add new ‘Tomcat Server’ configuration” -> ‘local’ -> …
上面步骤执行完后开始运行项目:

运行的console界面

可以发现项目很快就结束了,spring日志输出竟然没有,然后弹出的web界面显示404,相信很多人在这个时候显得有点束手无策。

解决办法

步骤:‘project-structure’ -> ‘artifact’ -> ‘put into /WEB-INF/lib’。问题解决!
界面如下:

问题产生原因

通过spring mvc源码我们可以看到一个核心的类org.springframework.web.SpringServletContainerInitializer,该类继承
ServletContainerInitializer,查看该类注释可以看到如下:

Interface which allows a library/runtime to be notified of a web application’s startup phase and perform any required
programmatic registration of servlets, filters, and listeners in response to it.

也就是说tomcat在启动中找ServletContainerInitializer实现类,如果有并且有HandlesTypes注解标识,则tomcat会去加载该web应用。而
spring mvc肯定是实现了该接口,也就是上面的SpringServletContainerInitializer类。他是我们应用能否加载的核心,所以WEB-INF/lib
中一旦缺少spring-web.jar后,哪怕你其它的约束都遵循servlet协议,应用仍然无法加载,放进去就OK了!

模拟不添加spring-web.jar

我们还是按照上面方式将所有jar包放入/WEB-INF/lib/目录下,remove掉spring-web包,运行时会发现应用仍然无法加载,且报404错误,这
也就验证了我们上面的结论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值