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
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.