brabec
brabec

Reputation: 4740

Tomcat 5.5 Servlet/JSP/JSTL dependencies

I have a problem with Tomcat 5.5 and Java EE webapp libraries. I'm using Gradle for dependency management and I'm using JSP API 2.0, Servlet API 2.4 and JSTL 1.1.

I'm getting a org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application

According to http://www.mularien.com/blog/2008/04/24/how-to-reference-and-use-jstl-in-your-web-application/, that means the JSTL implementation is missing.

Here is what my web.xml looks like:

<web-app
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns j2ee/web-app_2_4.xsd"
    version="2.4">


This is how I reference the JSTL libraries:

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


Corresponding dependencies in Gradle build file:

providedCompile group: 'javax.servlet', name: 'servlet-api', version: '2.4'
providedCompile group: 'javax.servlet', name: 'jsp-api', version: '2.0'
compile group: 'javax.servlet', name: 'jstl', version: '1.1.+'


In Tomcat/common/libs, I have these jars:

Tomcat 5.5\common\lib

23.09.2002  12:23            45˙386 activation.jar
05.03.2007  17:26           112˙341 commons-el.jar
05.03.2007  17:26         1˙213˙732 jasper-compiler-jdt.jar
05.03.2007  17:26           408˙133 jasper-compiler.jar
05.03.2007  17:26            76˙844 jasper-runtime.jar
05.03.2007  17:26            50˙952 jsp-api.jar
29.08.2005  22:28           358˙085 LOG4J-1.2.12.JAR
12.10.2004  13:20           347˙137 mail-1.3.2.jar
05.03.2007  17:26           163˙490 naming-factory-dbcp.jar
05.03.2007  17:26            31˙963 naming-factory.jar
05.03.2007  17:26            47˙730 naming-resources.jar
05.03.2007  17:26            99˙235 servlet-api.jar


In the built WAR, the only relevant JAR file is jstl-1.1.2.jar

Upvotes: 2

Views: 4580

Answers (3)

Dunith Dhanushka
Dunith Dhanushka

Reputation: 4342

compile "javax.servlet:com.springsource.javax.servlet.jsp.jstl:1.1.2";

This line will add the gradle dependency for JSTL.

Upvotes: 0

Denees
Denees

Reputation: 9198

I think you could download the c.tld (I have it, if you want, i can upload it anywhere for you) and declare it in web.xml like this:

 <jsp-config>
    <taglib>
        <taglib-uri>/WEB-INF/c.tld</taglib-uri>
        <taglib-location>/WEB-INF/c.tld</taglib-location>
    </taglib>
 </jsp-config>

And in jsp as well:

<%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>

Upvotes: 1

user124
user124

Reputation: 1732

My guess is you must include both api and impl of jstl in your war file. There are few jstl implementations around, for example here or here . Unfortunately, i dont know how to force gradle do this for you.

Upvotes: 4

Related Questions