Tomcat 5.5 Servlet / JSP / JSTL依赖项

时间:2011-06-15 07:33:54

标签: java tomcat jstl gradle

我遇到Tomcat 5.5和Java EE webapp库的问题。我正在使用Gradle进行依赖管理,我正在使用JSP API 2.0,Servlet API 2.4和JSTL 1.1。

我收到了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

根据http://www.mularien.com/blog/2008/04/24/how-to-reference-and-use-jstl-in-your-web-application/,这意味着缺少JSTL实现。

这是我的web.xml的样子:

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

<小时/> 这就是我引用JSTL库的方式:

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

<小时/> Gradle构建文件中的相应依赖项:

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

<小时/> 在Tomcat / common / libs中,我有这些罐子:

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

<小时/> 在构建的WAR中,唯一相关的JAR文件是jstl-1.1.2.jar

3 个答案:

答案 0 :(得分:4)

我的猜测是你必须在war文件中包含两者 api和jstl的impl。周围的jstl实现很少,例如herehere。不幸的是,我不知道如何强迫gradle为你做这件事。

答案 1 :(得分:1)

我想你可以下载c.tld(我有它,如果你愿意的话,我可以在任何地方为你上传)并在web.xml中声明它如下:

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

在jsp中也是如此:

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

答案 2 :(得分:0)

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

此行将为JSTL添加gradle依赖项。