Administrator
发布于 2022-10-13 / 42 阅读
0
0

Tomcat运行打开首页报错

在准备打断点的时候打开首页面,发现直接报错

Servlet.service() for servlet [jsp] in context with path [] threw exception

image-1665627039018

严重: Servlet.service() for servlet [jsp] in context with path [] threw exception 
[java.lang.NullPointerException] with root cause
java.lang.NullPointerException

而我之前的也没改什么配置,唯一的操作就是加了几个maven的依赖。

  <!--j2ee相关包 servlet、jsp、jstl-->
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
  </dependency>
  
  <dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.2</version>

  </dependency>
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
  </dependency>

以上代码,是为了防止MyServlet.java 文件报错。但是tomcat 启动时,也会进行相应检索,检索到图上代码,会和Maven 内置的 tomcat 中的jar 包起冲突,从而报错。

按网上说的解决办法

增加调用范围约束 <scope>provided</scope>, 从而只在代码编译的时候调用上述代码块;
运行的时候时候,就不会调用上上述代码块,最后不会再和内置tomacat 的 jar 包起冲突。

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

评论