首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javax.servlet.ServletException :找不到javax.servlet.ServletException无法访问javax.servlet.ServletException类文件

javax.servlet.ServletException :找不到javax.servlet.ServletException无法访问javax.servlet.ServletException类文件
EN

Stack Overflow用户
提问于 2022-01-20 07:44:52
回答 1查看 3.3K关注 0票数 2

描述

在开发java项目时,我使用:

Java version: 1.8

Apache Tomcat version 9.0.x

然后,我使用Tomcat 10.0.x来运行我的项目(在我的项目中很少有修改)。我必须将javax包相关导入更改为jakarta包导入。

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

代码语言:javascript
复制
java: cannot access javax.servlet.ServletException  
class file for javax.servlet.ServletException not found

修复

当我搜索修复程序时,我发现我需要在我的Java Servlet API文件中包含pom.xml依赖项。这样我就能成功地建立这个项目。

代码语言:javascript
复制
<!-- 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>

问题

  1. 为什么在迁移到Tomcat 10时必须包含Java Servlet API依赖项?
  2. 我确实包含了Java Servlet API依赖项,但这是一个正确的解决方法吗?
EN

回答 1

Stack Overflow用户

发布于 2022-01-20 11:44:39

为什么在迁移到Tomcat 10时必须包括依赖项?

大概是因为您的应用程序依赖于符合JSP 4.0.x规范的东西。

我确实包含了依赖项,但这是一个正确的修复方法吗?

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

正确的方法是确定您的应用程序或其依赖项为什么要在javax.servlet中使用类.把这个消灭掉。

  1. 删除javax.servlet / javax.servlet-api / 4.0.1依赖项。
  2. 搜索应用程序代码库,以查找对javax.servlet的任何剩余引用.并改变他们。
  3. 使用Maven依赖树插件尝试识别您的应用程序依赖项中的哪个依赖于旧的javax.servlet API。寻找替代使用jakarta.servlet的那些依赖项的更新版本。

如果2和3不确定罪魁祸首,就会变得相当困难。您可能需要解压缩所有依赖的JAR文件,并使用javapgrep“分析”它们。或者有更好的办法。

如果您能够识别依赖项,但无法找到与雅加达兼容的版本,那么您就会遇到另一种问题。您必须在努力移植依赖项、找到另一个库(或其他什么)以提供该功能,还是从您的web应用程序中删除该功能之间做出选择。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70782389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档