我尝试使用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>
3条答案
按热度按时间67up9zun1#
JSTL的Jakarta EE 9版本以JSTL2.0here的形式提供。
这是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
。另请参阅:
nuypyhwy2#
对于您的配置,您需要这两个文件才能使JSTL正常工作:
如果您将它们放在项目的lib文件夹中,那么它只对该应用程序有效。因此,我建议您将它们放在Tomcat应用程序的lib文件夹中(.../apache-tomcat-10.0.6/lib/)以及其他jar文件中。
This是一个相当不错的主题,详细讨论了这件事。
lztngnrs3#
对于那些曾经像我一样迷失的人:您需要下载最新版本的taglibs和jslt(以及它们的依赖项)!
事情是这样的
1.将下载的JAR移至项目 * WEB-INF/lib * 文件夹中,该文件夹应如下所示: