Как добавить JSTL в Maven? - PullRequest
31 голосов
/ 01 марта 2011

Я работаю над проектом JSF 2.0, использующим Mojarra, PrimeFaces и Tomcat 6.x.

Мне нужно использовать c: forEach для некоторых основных компонентов, таких как динамическое число p: tab, но у меня проблемас помощью c: forEach.Все другие теги JSTL работают хорошо.

У меня есть следующая ошибка:

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

Я использую следующее xmlns:c="http://java.sun.com/jsp/jstl/core", я пытался заменить на xmlns:c="http://java.sun.com/jstl/core", но ничего не отображалось на втором.

Это точная версия 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>

Как я могу это исправить?

Я могу дать более конкретную информацию, если это необходимо.

РЕДАКТИРОВАТЬ: Я добавил и попробовал различные области (время выполнения и компиляция), но ничегоизменить:

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

Список репозитория:

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

Это содержимое $ 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

Ответы [ 4 ]

55 голосов
/ 02 марта 2011

Вы должны включить библиотеку jstl в свой дистрибутив.Это может быть обеспечено контейнером, хотя это не рекомендуемая практика.Зависимость maven для текущей версии (на момент написания) находится здесь:

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

Хотя всегда стоит проверить центральный репозиторий maven на наличие обновлений.

17 голосов
/ 01 марта 2011

Как сказал Балус, вам просто нужно добавить JSTL в ваш pom.xml, потому что Tomcat его не включает. 1.2 самая последняя версия:

<dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>jstl</artifactId>
   <version>1.2</version>
</dependency>
7 голосов
/ 13 июля 2014
<!-- 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>

И затем вы можете использовать стандартные теги и функции Java на странице jsp следующим образом:

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

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

Это также работает в одиночку:

<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
1 голос
/ 02 января 2017

Я знаю, что вопрос старый, но он высокий в результатах Google, поэтому я добавляю его.

Более новые версии JSTL доступны (только) под org.glassfish.web groupId .Пример:

<dependency>
    <groupId>org.glassfish.web</groupId>
    <artifactId>javax.servlet.jsp.jstl</artifactId>
    <version>1.2.4</version>
</dependency>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...