java:|java: HTTP Status 500 - Class.xxx.xxx.xxx. is not a Servlet
问题背景
环境参数:学习maven依赖范围,跟着视频演示没有设置
servlet-api
的依赖范围为provided
时,访问服务器报错。报错信息 报错内容: 报错信息: HTTP Status 500 - Class.xxx.xxx.xxx. is not a Servlet [视频演示]
报错截图:
文章图片
问题分析 【java:|java: HTTP Status 500 - Class.xxx.xxx.xxx. is not a Servlet】单独添加
servlet-api.jar
原因:? 在案例中,添加了tomcat7插件plugin,提供了tomcat容器环境,tomcat中提供
servlet-api.jar
,但是只有当运行tomcat时才会使用到这个servlet,所以避免在编译阶段因为没有servlet而报错,需要单独提供一个servlet依赖。设置单独的servlet依赖的
为provided
原因:? 如果不设置为
provided
,则运行打包阶段单独的servlet会和tomcat容器中的servlet打包在同一个文件夹中造成冲突而报错。单独的servlet仅希望在编译阶段中有效,而运行打包阶段不需要将这个servlet打包。问题解决 一般情况下,单独添加的
servlet-api
依赖坐标需要添加为provided
javax.servlet
javax.servlet-api
3.1.0
provided
maven依赖范围表格
依赖范围 | 对编译阶段有效 | 对测试阶段有效 | 对运行时有效 | 例子 |
---|---|---|---|---|
compile | Y | Y | Y | spring-core |
test | Y | Junit | ||
provided | Y | Y | servlet-api | |
runtime | Y | Y | JDBC驱动 | |
system | Y | Y | 本地Maven参控股之外的类库【不需要了解】 |
推荐阅读
- JavaScript面向对象之深入了解ES6的class
- Java实现超市会员管理系统
- 剑指Offer之Java算法习题精讲二叉搜索树与数组查找
- Java基础知识之CharArrayReader流的使用
- Java实现简易提款机
- JAVA人生|程序员30岁之前年薪不到40W,再不转行都晚了()
- Java|做了6年开发,工资涨不上去,怎么办?
- java|为什么使用开源软件_为什么要使用开源软件()
- java|为什么要使用开源软件()
- java|开源 非开源_在从事开源律师职业之前要了解的内容