描述
在开发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修复
当我搜索修复程序时,我发现我需要在我的Java Servlet API文件中包含pom.xml依赖项。这样我就能成功地建立这个项目。
<!-- 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>问题
Java Servlet API依赖项?Java Servlet API依赖项,但这是一个正确的解决方法吗?发布于 2022-01-20 11:44:39
为什么在迁移到Tomcat 10时必须包括依赖项?
大概是因为您的应用程序依赖于符合JSP 4.0.x规范的东西。
我确实包含了依赖项,但这是一个正确的修复方法吗?
不,这不是正确的解决办法。虽然您已经成功地构建了您的应用程序,但是当您部署到Tomcat 10时,您将得到大多数类加载程序错误,这是因为Tomcat 10运行时库不提供javax.servlet.*类。
正确的方法是确定您的应用程序或其依赖项为什么要在javax.servlet中使用类.把这个消灭掉。
javax.servlet / javax.servlet-api / 4.0.1依赖项。javax.servlet的任何剩余引用.并改变他们。javax.servlet API。寻找替代使用jakarta.servlet的那些依赖项的更新版本。如果2和3不确定罪魁祸首,就会变得相当困难。您可能需要解压缩所有依赖的JAR文件,并使用javap和grep“分析”它们。或者有更好的办法。
如果您能够识别依赖项,但无法找到与雅加达兼容的版本,那么您就会遇到另一种问题。您必须在努力移植依赖项、找到另一个库(或其他什么)以提供该功能,还是从您的web应用程序中删除该功能之间做出选择。
https://stackoverflow.com/questions/70782389
复制相似问题