Dha*_*a07 6 java tomcat java-8 tomcat9 tomcat10
当我开发我的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
Run Code Online (Sandbox Code Playgroud)
当我搜索修复程序时,我发现我需要在文件Java Servlet API中包含依赖项pom.xml。这样我就可以成功构建项目了。
java: cannot access javax.servlet.ServletException
class file for javax.servlet.ServletException not found
Run Code Online (Sandbox Code Playgroud)
Java Servlet API为什么我在迁移到 Tomcat 10 时必须包含依赖项?Java Servlet API依赖项,但这是一个正确的修复吗?当我迁移到 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...的任何剩余引用并更改它们。
使用Maven 依赖关系树插件尝试识别哪些应用程序依赖项依赖于旧javax.servletAPI。寻找那些使用的依赖项的较新版本jakarta.servlet。
如果2和3不能确定罪魁祸首,事情就会变得相当困难。您可能需要解压所有依赖的 JAR 文件并使用javap和 来“分析”它们grep。或者可能有更好的方法。
如果您能够识别依赖项,但找不到与 Jakarta 兼容的版本,那么您会遇到另一种问题。您必须选择是努力移植依赖项、寻找另一个库(或其他库)来提供该功能,还是从您的 Web 应用程序中删除该功能。
| 归档时间: |
|
| 查看次数: |
23034 次 |
| 最近记录: |