jakarta.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/jsp/标记扩展名/标记库验证器

ijxebb2r  于 2022-12-07  发布在  Java
关注(0)|答案(3)|浏览(523)

我尝试使用JSTL执行JSP,但无法执行。我使用的是Apache Tomcat 10,即jakarta.servlet.*而不是javax.servlet.*。因此,每当我使用JSTL 1.2.5文件执行Web应用程序时,就会出现错误:

jakarta.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagLibraryValidator
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:778)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

我试着在网上找到一个类似的问题,但是没有找到。我如何在Tomcat 10中使用JSP中的JSTL?
我的索引JSP文件代码:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<html>  
  <head>  
    <title>Tag Example</title>  
  </head>  
  <body>  
    <c:out value="${'Hello Yo'}"/> 
  </body>  
</html>
67up9zun

67up9zun1#

JSTL的Jakarta EE 9版本以JSTL2.0here的形式提供。

<dependency>
    <groupId>org.glassfish.web</groupId>
    <artifactId>jakarta.servlet.jsp.jstl</artifactId>
    <version>2.0.0</version>
</dependency>

这是JSTL 2.0的参考实现,目前也用于GlassFish 6.0(最初来自Sun,然后归Oracle所有,然后归Eclipse所有)。通常Apache也有自己的实现,但它还没有作为JSTL 2.0提供(还没有?)。
为了完整起见,也为了确认,是的JSTL 2.0的taglib URI仍然引用原始的java.sun.com主机,而您直观上希望它也被迁移到xmlns.jcp.org甚至jakarta.ee

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

另请参阅:

nuypyhwy

nuypyhwy2#

对于您的配置,您需要这两个文件才能使JSTL正常工作:

如果您将它们放在项目的lib文件夹中,那么它只对该应用程序有效。因此,我建议您将它们放在Tomcat应用程序的lib文件夹中(.../apache-tomcat-10.0.6/lib/)以及其他jar文件中。
This是一个相当不错的主题,详细讨论了这件事。

lztngnrs

lztngnrs3#

对于那些曾经像我一样迷失的人:您需要下载最新版本的taglibsjslt(以及它们的依赖项)!

事情是这样的

  1. Download the latest taglibs from Apache for Tomcat 10
  2. Download the latest jslt and dependencies-除了jakarta.servlet-api-5.0.0.jar(here is why)以外的所有文件
    1.将下载的JAR移至项目 * WEB-INF/lib * 文件夹中,该文件夹应如下所示:
.
+-- _WEB-INF
|   +-- lib
|       +-- jakarta.activation-2.0.0.jar
|       +-- jakarta.el-api-4.0.0.jar
|       +-- jakarta.servlet.jsp.jstl-2.0.0.jar
|       +-- jakarta.servlet.jsp.jstl-api-2.0.0.jar
|       +-- jakarta.xml.bind-api-3.0.0.jar
|       +-- taglibs-standard-compat-1.2.5.jar
|       +-- taglibs-standard-impl-1.2.5.jar
|       +-- taglibs-standard-spec-1.2.5.jar

相关问题