我正在尝试使用 Netbeans 12.4 和 Tomcat 10.0.13 构建一个 web 应用程序项目。我很惊讶地看到我的项目编译得很好,但从未调用过上下文监听器。相反,我看到类似的消息
java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener
Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContextListener
在日志中。我的战争没有捆绑 servet API 和解决方案,因为ClassNotFoundException 与 ServletContextlistener似乎不起作用,所以我走了另一条路,试图在 Tomcat 安装中找到 ServletContextListener 类。并在 ${CATALINA_HOME}/lib/servlet-api.jar 中找到它。到目前为止,一切都很好。
但是当我进一步检查 jar 时,完全限定的类名是jakarta.servlet.ServletContextListener
. 惊慌失措,我搜索并找到了https://tomcat.apache.org/tomcat-10.0-doc/servletapi/index.html?jakarta/servlet/ServletContextListener.html
这看起来不像是小故障,是吗?但是,我应该如何编写 Java Web 应用程序?我应该编译 vsjavax.servlet.XXX
还是jakarta.servlet.XXX
?