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

42次阅读

共计 823 个字符,预计需要花费 3 分钟才能阅读完成。

问题背景

环境参数:

学习 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…

正文完
 0