Estoy trabajando en una JSF 2.0 proyecto con Mojarra, PrimeFaces y Tomcat 6.x.

Necesito usar c:forEach para algunos primefaces componente como la dinámica del número de p:ficha pero tengo un problema con el c:forEach. Todas las demás etiquetas JSTL de trabajo agradable.

Tengo el siguiente error :

java.lang.NoClassDefFoundError:
javax/servlet/jsp/jstl/core/LoopTagStatus

Yo uso el siguiente xmlns:c="http://java.sun.com/jsp/jstl/core", he intentado reemplazar con xmlns:c="http://java.sun.com/jstl/core" pero nada la pantalla con la segunda.

Esta es la versión exacta de lib:

<dependency>
    <groupId>javax.faces</groupId>
    <artifactId>jsf-api</artifactId>
    <version>2.0.2-FCS</version>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>com.sun.faces</groupId>
    <artifactId>jsf-impl</artifactId>
    <version>2.0.4-b03</version>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>org.primefaces</groupId>
    <artifactId>primefaces</artifactId>
    <version>2.2.1</version>
</dependency>

<dependency>
    <groupId>javax.el</groupId>
    <artifactId>el-api</artifactId>
    <version>2.2</version>
</dependency>

<dependency>
    <groupId>org.glassfish.web</groupId>
    <artifactId>el-impl</artifactId>
    <version>2.2</version>
</dependency>

Cómo puedo solucionarlo ?

Me puede dar información más específica si es necesario.

EDICIÓN:
He añadido y trató de ámbitos diferentes (tiempo de ejecución y compilación), pero nada cambio:

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

La lista de repositorio:

  <repositories>
    <repository>
      <id>central</id>
      <name>Maven Repository Switchboard</name>
      <layout>default</layout>
      <url>http://repo1.maven.org/maven2</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>maven-repository.dev.java.net</id>
      <name>Java.net Repository for Maven 1</name>
      <url>http://download.java.net/maven/1/</url>
      <layout>default</layout>
    </repository>
    <repository>
      <id>maven2</id>
      <name>Java.net Repository for Maven</name>
      <url>http://download.java.net/maven/2</url>
      <layout>default</layout>
    </repository>
    <repository>
      <id>prime-repo</id>
      <name>Prime Technology Maven Repository</name>
      <url>http://repository.prime.com.tr</url>
      <layout>default</layout>
    </repository>
    <repository>
      <id>JBoss2</id>
      <url>https://repository.jboss.org/nexus/content/repositories/public</url>
    </repository>
    <repository>
      <id>JBoss</id>
      <url>http://repository.jboss.com/maven2</url>
    </repository>
    <repository>
      <id>EclipseLink Repo</id>
      <url>http://www.eclipse.org/downloads/download.php?r=1&amp;nf=1&amp;file=/rt/eclipselink/maven.repo</url>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>itextpdf.com</id>
      <name>Maven Repository for iText</name>
      <url>http://maven.itextpdf.com/</url>
    </repository>

    <repository>
      <id>guiceyfruit.release</id>
      <name>GuiceyFruit Release Repository</name>
      <url>http://guiceyfruit.googlecode.com/svn/repo/releases/</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <releases>
        <enabled>true</enabled>
      </releases>
    </repository>
  </repositories>

Este es el contenido de $TOMCAT_HOME/lib

annotations-api.jar catalina-ha.jar
catalina-tribes.jar el-impl-2.2.jar
jasper.jar jsf-api.jar

jsp-api.jar servlet-api.jar

tomcat-dbcp.jar

tomcat-i18n-fr.jar catalina-ant.jar

catalina.jar el-api-2.2.jar

jasper-el.jar jasper-jdt.jar

jsf-impl-2.0.4-b03.jar ojdbc6.jar

tomcat-coyote.jar tomcat-i18n-es.jar
tomcat-i18n-ja.jar

  • Tomcat no llega con JSTL fuera de la caja. Es necesario instruir a su Maven cosa para agregar JSTL. He mejorado el título y las etiquetas para atraer a la gente adecuada.
  • Posibles duplicados de Incluir JSTL de dependencia con Maven
InformationsquelleAutor La Chamelle | 2011-02-28

4 Comentarios

  1. 55

    Se debe incluir la librería jstl en su distribución. Esto puede ser proporcionado por el contenedor, a pesar de que no es una práctica recomendada. La maven dependencia de la versión actual (como el de la escritura) está aquí:

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

    Aunque, siempre vale la pena comprobar el repositorio central de maven para las actualizaciones.

    • este hilo puede ser viejo, pero que diablos es pom.xml?
    • Normalmente en la raíz de su proyecto de Maven.
    • esto puede ayudar a algunos, me ayudó: [maven setup]( murraywilliams.com/2011/11/…)
    • este hilo es viejo, pero +1 por el origen: Por defecto, el contenedor Tomcat no contiene ningún jstl de la biblioteca.
    • Para 1.2.1 ver: stackoverflow.com/a/24468573/281545
    • En realidad, el frasco no necesita estar en $TOMCAT_HOME/lib a todos. Usted debe sentirse libre de paquete dentro de su web, de la aplicación de la guerra. La dependencia es correcta, sin embargo, incluso a pesar de que el pre – y post-información es incorrecta, por lo que -1 para el toro y bien hecho para encontrar la correcta identificación del grupo.
    • EngineerDollery es correcto, puede usted por favor, actualice la respuesta?

  2. 17

    Como Balus dijo, sólo se necesita añadir a su JSTL pom.xml porque Tomcat no la incluyen. 1.2 es la versión más reciente:

    <dependency>
        <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
    </dependency>
    • No funciona, puede ser que algo falta en mi pom o hay algunos conflictos ?
    • Necesidad de incluir la jstl.jar en el tomcat directorio lib y el uso de los límites previstos.
    • ¿A qué servidor estás usando? Has incluido standart taglibs así?
    • Me sale este error también, la implementación a weblogic server y esta solución no funciona. También estoy usando Maven para la construcción.
  3. 7
    <!-- standard.jar --> 
    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>standard</artifactId>
        <version>1.1.2</version>
    </dependency>
    
    <!-- JSTL --> 
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.1.2</version>
    </dependency>

    Y, a continuación, puede utilizar el Java Standart Etiquetas y Funciones de la siguiente manera en su página jsp:

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

    Esto también funciona solo:

    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
  4. 1

    Sé que el tema es viejo, pero es alta en los resultados de Google, así que voy a agregar esto.

    Más reciente JSTL versión están disponibles (sólo) en virtud de org.glassfish.web groupId. Ejemplo:

    <dependency>
        <groupId>org.glassfish.web</groupId>
        <artifactId>javax.servlet.jsp.jstl</artifactId>
        <version>1.2.4</version>
    </dependency>

Dejar respuesta

Please enter your comment!
Please enter your name here