关于java:java-HTTP-Status-500-Classxxxxxxxxx-is-not-a-Servlet

问题背景

环境参数:

学习maven依赖范畴,跟着视频演示没有设置servlet-api的依赖范畴为provided时,拜访服务器报错。

报错信息

报错内容: 报错信息: 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依赖的<scope>provided起因:

​ 如果不设置为provided,则运行打包阶段独自的servlet会和tomcat容器中的servlet打包在同一个文件夹中造成抵触而报错。独自的servlet仅心愿在编译阶段中无效,而运行打包阶段不须要将这个servlet打包。

问题解决

个别状况下,独自增加的servlet-api依赖坐标须要增加<scope>为provided

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

maven依赖范畴表格

依赖范畴 对编译阶段无效 对测试阶段无效 对运行时无效 例子
compile Y Y Y spring-core
test Y Junit
provided Y Y servlet-api
runtime Y Y JDBC驱动
system Y Y 本地Maven参控股之外的类库【不须要理解】

相干参考

【视频】依赖范畴详解: https://www.bilibili.com/vide…

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理