Skip to content

Apache Log4j Tag Library not working on tomcat 10.1.34 #3401

@pischky

Description

@pischky

Description

I'm trying to port a project using JSP from Tomcat 9 to Tomcat 10.1.34 but "Apache Log4j Tag Library" ("log4j-taglib-2.24.3.jar")
is not working anymore.

Configuration

log4j-taglib-2.24.3.jar

Winows 7

Java 21.0.2 / Oracle

Logs

HTTP Status 500 – Internal Server Error

Type Exception Report

Message java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/BodyTagSupport

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

Exception

jakarta.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/BodyTagSupport
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:70)

Root Cause

java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/BodyTagSupport
java.base/java.lang.ClassLoader.defineClass1(Native Method)
java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027)
java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2350)
org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2219)
org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:813)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1335)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1183)
org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1244)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1477)
org.apache.jasper.compiler.Parser.parse(Parser.java:138)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:264)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:109)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:194)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:367)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:345)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:331)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:396)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:377)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:325)
jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:70)

Root Cause

java.lang.ClassNotFoundException: javax.servlet.jsp.tagext.BodyTagSupport
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1374)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1183)
java.base/java.lang.ClassLoader.defineClass1(Native Method)
java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027)
java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2350)
org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2219)
org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:813)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1335)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1183)
org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1244)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1477)
org.apache.jasper.compiler.Parser.parse(Parser.java:138)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:264)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:109)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:194)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:367)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:345)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:331)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:396)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:377)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:325)
jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:70)

Hinweis Der komplette Stacktrace der Ursache ist in den Server logs zu finden

Reproduction

<%@ taglib prefix="log" uri="http://logging.apache.org/log4j/tld/log" %>
<log:setLogger logger="/index.jsp" />

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    To triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions