Spring Maven Web应用部署Heroku遇404及DispatcherServlet类未找到错误
解决Spring Maven Web应用部署Heroku后404+DispatcherServlet类找不到的问题
从你提供的Heroku日志来看,核心错误是:
java.lang.ClassNotFoundException: org.springframework.web.context.DispatcherServlet
这个问题通常由两个常见原因导致,下面逐一给出解决方案:
1. DispatcherServlet类名配置错误
先检查你的web.xml(或者Java配置类)里的DispatcherServlet全类名是否正确。正确的全类名应该是org.springframework.web.servlet.DispatcherServlet,而不是日志里显示的org.springframework.web.context.DispatcherServlet——你大概率是把包路径写错了!
如果是用web.xml配置,修正后的代码示例:
<servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>
2. Maven依赖范围配置错误
如果类名是正确的,那大概率是Spring Web MVC的依赖没有被正确打包到部署包中。很多开发者会错误地把spring-webmvc的依赖范围设为provided,但Heroku的运行环境不会自带这个依赖,导致运行时找不到类。
打开你的pom.xml,找到spring-webmvc的依赖,确保它的scope是默认的compile(可以不写scope,默认就是compile):
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>你的Spring版本号</version> <!-- 移除scope="provided"这一行,除非你确认运行环境自带该依赖 --> </dependency>
3. 重新打包部署
修改完成后,先在本地执行打包命令确保没有问题:
mvn clean package
然后提交修改并重新推送到Heroku:
git add . git commit -m "Fix DispatcherServlet config and dependencies" git push heroku main
完成后再访问你的应用链接,应该就能正常加载了。
内容的提问来源于stack exchange,提问作者user3057645
相关产品推荐
相关产品推荐

