Search code examples
javajspjakarta-eejstl

Migration to Jakarta EE: Unable to find taglib [c] for URI: [jakarta.tags.core]


I am trying to upgrade from Spring 5 to Spring 6 and get the following error:

Unable to find taglib [c] for URI: [jakarta.tags.core]

I have the following in my pom:

    <dependency>
        <groupId>jakarta.servlet</groupId>
        <artifactId>jakarta.servlet-api</artifactId>
        <version>6.0.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>jakarta.servlet.jsp</groupId>
        <artifactId>jakarta.servlet.jsp-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>jakarta.servlet.jsp.jstl</groupId>
        <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
        <version>3.0.0</version>
    </dependency>
    <dependency>
        <groupId>jakarta.el</groupId>
        <artifactId>jakarta.el-api</artifactId>
        <version>5.0.1</version>
    </dependency>

And I use the URI like this in JSP:

<%@ taglib prefix="c" uri="jakarta.tags.core" %>

The URI should be correct according to https://jakarta.ee/specifications/tags/3.0/jakarta-tags-spec-3.0.html#preface. I can't find any documentation on what dependencies I am missing to include.


Solution

  • Make sure to also add not only the API but also the Jakarta Tags Implementation:

    Maven

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

    Gradle

    implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl:3.0.0'