J'utilise JDK 1.7, Apache Tomcat 7.0.23 et j'ai placé la bibliothèque principale JSTL (1.2) et le fichier jar STANDARD dans le dossier lib WEB_INF. Cela ne me donne aucun avertissement, mais je vais essayer d'exécuter le code.
<%@ taglib uri="http://Java.Sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- Create Bean Instance-->
<jsp:useBean id="listdomain" class="bean.PopulateMultiDomain" scope="session"></jsp:useBean>
<jsp:setProperty property="*" name="listdomain"/>
<c:forEach var="item" items="${listdomain.status}">
<option>
<c:out value="${item}" />
</option>
</c:forEach>
cela me donne l'erreur suivante:
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
org.Apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.Java:56)
org.Apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.Java:410)
org.Apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.Java:117)
org.Apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.Java:311)
org.Apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.Java:152)
org.Apache.jasper.compiler.Parser.parseTaglibDirective(Parser.Java:410)
org.Apache.jasper.compiler.Parser.parseDirective(Parser.Java:475)
org.Apache.jasper.compiler.Parser.parseElements(Parser.Java:1425)
org.Apache.jasper.compiler.Parser.parse(Parser.Java:138)
org.Apache.jasper.compiler.ParserController.doParse(ParserController.Java:242)
org.Apache.jasper.compiler.ParserController.parse(ParserController.Java:102)
org.Apache.jasper.compiler.Compiler.generateJava(Compiler.Java:198)
org.Apache.jasper.compiler.Compiler.compile(Compiler.Java:373)
org.Apache.jasper.compiler.Compiler.compile(Compiler.Java:353)
org.Apache.jasper.compiler.Compiler.compile(Compiler.Java:340)
org.Apache.jasper.JspCompilationContext.compile(JspCompilationContext.Java:646)
org.Apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.Java:357)
org.Apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.Java:390)
org.Apache.jasper.servlet.JspServlet.service(JspServlet.Java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.Java:722)
Quelqu'un peut-il me suggérer quelle erreur je fais?
Retirer le standard.jar
. C'est apparemment de l'ancienne version de JSTL 1.0 lorsque les URI TLD étaient sans le /jsp
chemin. Avec JSTL 1.2 comme disponible ici vous n’avez pas besoin d’un standard.jar
du tout. Seulement le jstl-1.2.jar
dans /WEB-INF/lib
est suffisant.
J'ai résolu le même problème. Je viens d'ajouter JSTL-1.2.jar à /Apache-Tomcat-x.x.x/lib
et définissez la portée sur fournie dans maven pom.xml:
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>provided</scope>
</dependency>
Assurez-vous de ne pas sauter tous bocaux dans
Tomcat.util.scan.StandardJarScanFilter.jarsToSkip
dans Tomcat catalina.properties.
J'ai supprimé la portée, puis utilisé une mise à jour Maven pour résoudre ce problème.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
**<!-- <scope>provided</scope> -->**
</dependency>
La bibliothèque jstl n'est pas présente dans le dossier Tomcat lib. Nous devons donc l'inclure. Je ne comprends pas pourquoi on nous dit de conserver la portée de servlet-api et de jstl telles qu'elles sont fournies.
L’erreur en question peut également être provoquée par un désactivé JarScanner dans Tomcat/conf/context.xml
.
Voir aussi La mise à niveau de Tomcat 8.0.39 à 8.0.41 entraîne des erreurs "Fail to Scan" (- Echec de l'analyse) .
<JarScanner scanManifest="false"/>
permet d'éviter les deux problèmes.
Si vous utilisez Eclipse et maven pour gérer les dépendances, vous devrez peut-être suivre ces étapes supplémentaires pour vous assurer qu'Eclipse copie correctement les dépendances dépendances Maven non visibles dans WEB-INF/lib (notamment l'assembly de déploiement Application web dynamique)
si vous utilisez Spring Boot Check in application.propertiese
cette propriété est commentée ou supprimez-la si elle existe.
Si vous utilisez le projet maven, il vous suffit d'ajouter le fichier jstl-1.2 dans votre dépendance. Si vous ajoutez simplement le fichier JAR à votre projet, il est possible que le fichier JAR ne soit pas ajouté à l'artefact de projet de votre projet. Vous devez simplement ajouter le fichier jar dans le fichier WEB-INF/lib.
Voici à quoi devrait ressembler votre projet lorsque jstl n'est pas ajouté à l'artefact. Appuyez simplement sur le bouton de réparation et intellij ajoutera le fichier jar dans le chemin mentionné ci-dessus. Exécutez le projet et bang.
Cela peut être dû aux dépendances transitives.
Essayez d’ajouter ou de supprimer la portée de la bibliothèque JSTL.
Cela a fonctionné pour moi!