31

I'm trying to use JSTL, but I get the following error:

Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"

How is this caused and how can I solve it?

Roman C
  • 49,761
  • 33
  • 66
  • 176
charilaos13
  • 543
  • 2
  • 7
  • 19

8 Answers8

49

Use taglib definition in your JSP or better include it in every page by the first line.

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

There's also fix jstl-1.2 dependency in your project. Also use servlet specification at least 2.4 in your web.xml.

The maven dependencies are (maven is a open source development tool)

<dependency>
  <groupId>jstl</groupId>
  <artifactId>jstl</artifactId>
  <version>1.2</version>
  <scope>compile</scope>
</dependency>
<dependency>
  <groupId>taglibs</groupId>
  <artifactId>standard</artifactId>
  <version>1.1.2</version>
  <scope>compile</scope>
</dependency>

In the web.xml start writing

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

EDIT:

I'd like to add a note that @informatik01 has mentioned in the comment about newer version of JSTL libraries available from Maven repository: JSTL version 1.2.1 API and JSTL 1.2.1 .

Roman C
  • 49,761
  • 33
  • 66
  • 176
  • What I want to say is that: As I understand to use the jstl tags you need to use the above library, correct? What do you mean with the jstl-1.2 fix and use servlet specification 2.4? – charilaos13 Mar 15 '13 at 14:56
  • I didn't know that to use the jstl you needed to include the jar files. I did and I think now is working. There's been so many years that I've been using <% %> and now is a bit rough to get to know jstl. – charilaos13 Mar 16 '13 at 10:19
  • Everybody use JSTL or its alternatives to not to write their own tag library. <% %> is still the valid with JSP tags, intended that you don't use it for business logic and used servlets or frameworks instead. Please, mark the answer as accepted if it solve your question. – Roman C Mar 16 '13 at 11:12
  • This line I'm supposed to add is already there, and it's what's generating the error at the top of this page. – Dan Jameson Feb 03 '14 at 16:56
  • I was able to add the maven dependencies with a `provided` scope instead of `compile` – SGT Grumpy Pants Apr 02 '14 at 18:40
  • 1
    One note: considering the time the responce was posted it would be probably better to specify the currently latest JSTL version in POM: [JSTL version 1.2.1](http://search.maven.org/#artifactdetails|javax.servlet.jsp.jstl|javax.servlet.jsp.jstl-api|1.2.1|jar) – informatik01 Apr 11 '14 at 08:22
15

I had the same problem even after I added jar files for jstl and standard. For me, it resolved after I added a Targeted runtime for my project.

Go to Project Properties > Targeted Runtimes and select the server you are using (Tomcat 7.0 for me).

Arif Hossain
  • 606
  • 6
  • 9
4

create a libs folder in the inside WEB-INF directory and add jstl, standard jars as below.enter image description here

Praveen Kumar
  • 1,515
  • 1
  • 21
  • 39
  • You **"absolutely do not want"** to put `standard-1.1.2.jar` in your `libs` folder. Source: [@BalusC](https://stackoverflow.com/a/4928309/12597), and he has 1M rep, so i think he knows what he's talking about. – Ian Boyd Jul 22 '22 at 21:14
3

You may try to make the folder which include jsp-s become the source folder of eclipse, that solved the same problem of mine. As below:

  1. open project's properties.(right click project, then choose the Properties)
  2. choose Java Build Path, select the Source tab, click Add Folder and choose the folder including your jsp-s, OK
dongxu
  • 151
  • 1
  • 6
1

You just need to include the standard.jar file in your project build path.

Cody Gray - on strike
  • 239,200
  • 50
  • 490
  • 574
1

in your pom.xml just add

    <!-- jstl -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency> 

and try run

mvn eclipse:eclipse -Dwtpversion=2.0

will solve the problem

0

I have similar issue, why should we add external jar files when we are using maven?

I have already included jstl maven dependency then also I encounter error "Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"". Then I include following dependency then error get solve, without including any single external jar file.

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
</dependency>
marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
-1

Add this 3 file for runtime support as well`

As per snapshot the main reason for error is that you are not defining c.tld in lib folder causes such error.

This lib content information about taglib

arjun kumar
  • 467
  • 5
  • 12