idea运行web项目报404
打开IDEA,运行点下绿色三角,目报浏览器弹出404。运行这事儿我遇到过不下十次,目报每次原因都不一样。运行最气人的目报是控制台干干净净,Tomcat日志也没报错,运行就给你一个白底黑字的目报404页面,像个哑巴一样杵在那儿。运行 先说一个最容易踩的目报坑:Application context 配错了。IDEA里跑Tomcat,运行默认会把Artifact的目报context path设成 还有一种情况,web.xml里url-pattern写得太死。比如你写了个 Spring Boot项目更隐蔽。启动类不在根包下,组件扫描扫不到Controller。你写了个 静态资源404也常见。IDEA默认不会把 还有一个很蠢但发生频率极高的原因:端口被占了,你访问的是别的服务。IDEA启动Tomcat时如果8080被占用,它会自动改成8081或者别的端口,但浏览器地址栏里你还留着8080。那个端口上可能跑着另一个老项目,返回一个404。看控制台第一行, Maven多模块项目里,依赖没打进WAR包也会404。比如你的Controller在 最后说一个IDEA自身的毛病:缓存和索引坏了。表现是代码明明没问题,Artifact配置也对,但跑起来就是404。File → Invalidate Caches → Invalidate and Restart,重启后重新部署,大概率就好了。我一般遇到那种“哪哪都对但就是404”的情况,先清缓存,再排查别的。 404本身不复杂,复杂的是IDEA把部署过程包装得太好,出了问题你反而不知道从哪下手。我的排查顺序固定:先看控制台端口,再看Application context,然后看Spring映射日志,最后清缓存重建。四步走完,九成以上的404都能定位到具体原因。/ 或者 /项目名_exploded。你浏览器里敲 localhost:8080/,运行但实际部署上去的目报路径可能是 localhost:8080/untitled_war_exploded/。打开Run/Debug Configurations,运行找到Deployment选项卡,看下面那行Application context填的是什么。我上次帮同事看,他填了个 /myapp,然后访问 localhost:8080/,找了半小时没找着北。<url-pattern>/hello</url-pattern>,但浏览器访问的是 /hello.do 或者 /hello/,那Servlet容器直接给你404,连日志都不带响的。这属于路径匹配的硬规则,跟IDEA没关系,但新手经常把锅甩给IDE。@RestController,放在 com.example.demo.controller,启动类却在 com.example 的兄弟目录里。IDEA跑起来一切正常,Tomcat也起来了,但DispatcherServlet压根不知道有这个映射。控制台会打一行 No mapping for GET /xxx,很多人不看这行,直接去翻Tomcat日志,方向就错了。src/main/webapp 下的文件全部热部署到Tomcat的webapps目录。你改了HTML,刷新浏览器还是404。打开Project Structure → Artifacts,看Output Layout里WEB-INF/classes和webapp根目录的内容有没有同步。有时候IDEA抽风,需要手动删掉out目录和target目录重新build。我自己的习惯是,改完静态文件先点一下Build → Rebuild Project,再重启Tomcat,比热部署靠谱。Tomcat started on port(s): 8081,你访问8080当然找不到。这种错误我犯过两次,后来养成了习惯,启动后先看控制台端口号,再复制地址。module-web 里,但部署的Artifact只包含了 module-service 的编译输出。IDEA的Artifact配置里,Available Elements里有一堆没放进WEB-INF/lib的jar,双击放到左边就好了。这个坑在父子模块依赖关系复杂的时候特别容易踩。
-
上一篇
-
下一篇
- 最近发表
- 随机阅读
- 搜索
-
- 友情链接
-