使用maven创建javaweb项目,通过添加依赖的方式来添加servlet-api,版本4.0.1,如下
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
配置访问路径
运行后浏览器访问前端报错:HTTP Status 500 - Class com.alan.web.ServletDemo01 is not a Servlet
服务端报错:java.lang.ClassCastException: class com.alan.web.ServletDemo01 cannot be cast to class javax.servlet.Servlet (com.alan.web.ServletDemo01 is in unnamed module of loader org.apache.catalina.loader.WebappClassLoader @670976bf; javax.servlet.Servlet is in unnamed module of loader org.codehaus.plexus.classworlds.realm.ClassRealm @19a31b9d)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144)。。。。。
报错原因:
检查看看servlet依赖是不是没有配置作用范围的
没有配置的话,在运行的时候,servlet的servet-api.jar 会和tomcat(自带这个jar包)冲突。
解决办法:
在pom.xml中修改jar的依赖范围
<scope> provided </scope>
在编译和测试环境有效,在运行环境就会无效,这样在web项目打成war包时就不会有这个jar包,就不会和Tomcat冲突了。
完整的依赖配置:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>