2015-09-13 2 views
2

J'ai lu presque toutes les réponses à cette question sur SO et j'ai essayé plus d'une douzaine de "solutions" différentes mais je n'arrive pas à faire fonctionner JSTL dans une application web de démarrage en utilisant servlet 3.1 dans Tomcat 8.0. Je continue à recevoir cette erreur:Impossible d'obtenir Tomcat 8.0 avec Servlet 3.1 fonctionnant avec JSTL 1.2

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. 

J'utilise Maven pour construire le projet mais aussi JARs copié manuellement et dans l'espoir qui pourrait aider mais hélas, il n'a pas! J'espère que je suis juste en train de négliger quelque chose de stupide. Quelqu'un peut-il s'il vous plaît dites-moi ce que je fais mal ??

choses que j'ai essayé (pour tous ceux-ci, c'est la ligne inclus dans un simple fichier index.jsp -

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
  1. Ajouté la dépendance suivante à mon pom.xml (XML caractères supprimés pour formater mieux)

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

    cela met le jstl-1.2.jar dans mon répertoire WEB-INF/lib et je lui ai confirmé qu'il est là quand je Tomcat à déployer - cela ne fonctionne pas

  2. Retirées la dépendance ci-dessus et ajouté ces dépendances par la suggestion (http://www.murraywilliams.com/2011/11/running-jstl-1-2-on-tomcat-7-using-maven/)

    <dependency> 
        <groupId>org.glassfish.web</groupId> 
        <artifactId>jstl-impl</artifactId> 
        <version>1.2</version> 
        <exclusions> 
         <exclusion> 
          <artifactId>servlet-api</artifactId> 
          <groupId>javax.servlet</groupId> 
         </exclusion> 
         <exclusion> 
          <artifactId>jsp-api</artifactId> 
          <groupId>javax.servlet.jsp</groupId> 
         </exclusion> 
        </exclusions> 
    </dependency> 
    

    Cela met deux fichiers JAR supplémentaires dans mon répertoire WEB-INF/lib, un jstl-api-1.2.jar et jstl-impl-1.2.jar, et j'ai confirmé qu'ils sont là quand je déploie sur Tomcat - cela ne fonctionne pas

  3. J'ai également essayé de changer la portée à 'fourni' pour chacune de ces dépendances tout en plaçant le JAR respectifs dans le répertoire lib de Tomcat et redémarré Tomcat et ne fonctionne toujours pas.

Voici ma tête web.xml

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
     version="3.1"> 

Quoi qu'il en soit, toute aide est grandement appréciée!

+0

Voulez-vous dire que cela fonctionne correctement lorsque vous n'utilisez pas Spring Boot? – BalusC

+0

Non, mais je sais que Spring Boot fait tellement de choses dans les coulisses que j'ai l'impression que son utilisation pourrait être pertinente. Bien que j'aie exécuté un arbre de dépendances sur mon projet et n'ai vu aucun autre JAR tirant dans les JAR JSTL contradictoires. –

+0

Je ne veux pas poster une réponse à cette question car elle ne répond pas vraiment à la question mais j'ai décidé d'utiliser Thymeleaf pour gérer les vues au lieu de JSP. Il n'y a qu'une petite courbe d'apprentissage et il s'intègre très bien avec Spring 4 (et Spring Boot). J'encourage les autres à faire le changement aussi bien! –

Répondre

-1

Vous ne devriez pas utiliser la portée prévue depuis tomcat ne bibliothèque jstl

+0

C'est pourquoi j'ai dit que j'ai placé les fichiers JAR dans le répertoire lib Tomcat ... –

-1

Je pense que vous avez juste besoin de changer l'ID de groupe de javax.servlet.jsp.jstl à javax.servlet comme indiqué ci-dessous.

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

Quelqu'un pourrait-il donner un commentaire pourquoi cette réponse est donnée point négatif? Question donnée a été résolue avec cette approche, donc je crois qu'une raison valable devrait être fournie avec la marque négative. – lkamal