首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java.lang.NoClassDefFoundError: Tomcat 10中的雅加达/servlet/jsp/jstl/core/LoopTag

java.lang.NoClassDefFoundError: Tomcat 10中的雅加达/servlet/jsp/jstl/core/LoopTag
EN

Stack Overflow用户
提问于 2021-08-07 17:56:40
回答 2查看 2.7K关注 0票数 2

我刚迁移到Tomcat 10,在将javax.servlet包的所有引用都更改为jakarta.servlet之后,我仍然无法运行我的应用程序。

我从这里下载了JSTL2.0类库,并将它们添加到类路径中。我正在与Ant一起使用NetBeans。下面是我的类库:

下面是我添加的JSTL文件:

它引发以下异常:

代码语言:javascript
运行
复制
Type Exception Report

Message java.lang.NoClassDefFoundError: jakarta/servlet/jsp/jstl/core/LoopTag

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

jakarta.servlet.ServletException: java.lang.NoClassDefFoundError: jakarta/servlet/jsp/jstl/core/LoopTag
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:332)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:770)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    com.xyneex.post.PostFilter.doFilter(PostFilter.java:163)

Root Cause

java.lang.NoClassDefFoundError: jakarta/servlet/jsp/jstl/core/LoopTag
java.base/java.lang.ClassLoader.defineClass1(Native Method)
java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1010)
java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2470)
org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:866)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1370)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1224)
org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1232)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1464)
org.apache.jasper.compiler.Parser.parse(Parser.java:138)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:244)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:105)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:207)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:392)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:368)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:352)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:400)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
jakarta.servlet.http.HttpServlet.service(HttpServlet.java:770)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
com.xyneex.post.PostFilter.doFilter(PostFilter.java:163)

Root Cause

java.lang.ClassNotFoundException: jakarta.servlet.jsp.jstl.core.LoopTag
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1401)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1224)
java.base/java.lang.ClassLoader.defineClass1(Native Method)
java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1010)
java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2470)
org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:866)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1370)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1224)
org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1232)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1464)
org.apache.jasper.compiler.Parser.parse(Parser.java:138)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:244)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:105)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:207)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:392)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:368)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:352)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:400)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
jakarta.servlet.http.HttpServlet.service(HttpServlet.java:770)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
com.xyneex.post.PostFilter.doFilter(PostFilter.java:163)

Note The full stack trace of the root cause is available in the server logs.

我的JSP/HTML代码:

代码语言:javascript
运行
复制
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set var="home" value="active" scope="request" />
<!DOCTYPE html>
<html>
    <head>
        <title>Xyneex Technologies | Home </title>
        <jsp:include page="WEB-INF/fragments/head.jsp" />
        <style>
     ...

我在StackOverflow上也看到过类似的问题,但他们谈论的是Tomcat 7。

我在JDK 16中使用Tomcat 10。

请问这个问题的解决办法是什么?

编辑:

根据建议,这个问题和答案不是我的问题。由于答案是JSTL,我已经检查并确认我使用的是正确的URI。我坚信这个问题与我的JSTL库中不正确的JSTL文件有关,我无法确定要使用哪些JSTL jar文件。

编辑2:

在挖了几个小时后,我找到了我在回答中提供的解决办法。谢谢你的建议。

编辑3:

这个答案 by BalusC似乎解决了Tomcat 10的问题。在阅读答案时,请确保向下滚动到Tomcat 10部分。我一定是第一次错过了它,因为我以为他只谈到了URI。

感谢Piotr P. Karwasz为我指出了这一点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-08 20:06:16

我终于找到解决办法了!

我能够下载所需的jar文件这里

对于那些可能有同样问题的人:请注意:当添加jar文件时,不要包括jakarta.Servlet-API-5.0.jar文件。Tomcat 10已经有一个具有相同类的类似jar文件,这又引起了另一个头疼。我创建了一个新的库,并将其命名为JSTL2.0

下面是我添加到类路径中的jar文件的截图。

这对我来说很好!

票数 5
EN

Stack Overflow用户

发布于 2021-08-07 18:23:32

您可以将JSTL1.2库添加到您的应用程序中,如下所示,将jstl-Im.jar和jstl-api.jar添加到应用程序中

指定JSTL核心库的taglib指令:

代码语言:javascript
运行
复制
<%taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

下载文件的链接

http://www.java2s.com/Code/Jar/j/Downloadjstlapi12jar.htm http://www.java2s.com/Code/Jar/j/Downloadjstlimpl12jar.htm

不要忘记将这两个jar文件添加到META/lib中,如果没有您在应用程序中放置的所有文件,它就会正常工作。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68694873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档