java:无法访问javax.servlet.ServletException的类文件,未找到javax.servlet.ServletException的文件。

0 人关注

当我开发我的java项目时,我使用。
Java version: 1.8
Apache Tomcat version 9.0.x

然后,我使用 Tomcat 10.0.x 来运行我的项目(在我的项目中做了一些修改)。我不得不把 javax 包的相关导入改为 jakarta 包的导入。

当我构建该项目时,我得到了以下错误。

java: cannot access javax.servlet.ServletException  
class file for javax.servlet.ServletException not found

当我寻找修复方法时,我发现我需要在我的pom.xml文件中包括Java Servlet API依赖性。这样,我就可以成功地构建项目了。

<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
  • 为什么我在迁移到Tomcat 10时必须要包括Java Servlet API的依赖关系? 迁移到Tomcat 10?
  • 我确实包括了Java Servlet API的依赖性。 但这是一个适当的修复吗?
  • 2 个评论
    Stackoverflow.com/questions/64387472/ ...已经回答了这个问题,它将解释你为什么会有问题。
    你需要的是 jakarta.servlet-api 5或更高版本。
    java
    tomcat
    java-8
    tomcat9
    tomcat10
    Dhanusha_Perera07
    Dhanusha_Perera07
    发布于 2022-01-20
    1 个回答
    Stephen C
    Stephen C
    发布于 2022-01-20
    0 人赞同

    为什么我在迁移到Tomcat 10时必须包括Java Servlet API的依赖性?

    大概是因为你的应用程序对符合JSP 4.0.x规范的东西有依赖性。

    我确实包括了Java Servlet API的依赖性,但这是一个适当的修复吗?

    不,这不是正确的修复方法。 虽然你已经成功地构建了你的应用程序,但当你部署到Tomcat 10时,你大多数会得到类加载器错误。 这是因为Tomcat 10的运行库不提供 javax.servlet.* 类。

    正确的做法是确定为什么你的应用程序或其依赖关系试图使用 javax.servlet 中的类......并消除这一点。

  • 删除 javax.servlet / javax.servlet-api / 4.0.1 的依赖性。

  • 搜索你的应用程序代码库,找出任何剩余的对 javax.servlet 的引用......并将其修改。

  •