impossible de charger la bibliothèque de tags JSTL dans incorporé serveur Jetty
Je suis en train d'écrire une application web qui s'exécute au sein d'un intégré à la Jetée de l'instance.
Lorsque je tente d'exécuter une JSTL déclaration, je reçois l'exception suivante:
org.apache.jasper.JasperException: /index.jsp(1,63) PWC6188: L'uri absolu: http://java.sun.com/jsp/jstl/core ne peut pas être résolu dans les deux web.xml ou les fichiers jar déployé avec cette application
J'ai le texte suivant pots sur le chemin de classe
- ant-1.6.5.jar
- ant-1.7.1.jar
- ant-launcher-1.7.1.jar
- core-3.1.1.jar
- jetty-6.1.22.jar
- jetty-util-6.1.22.jar
- jsp-2.1-6.1.14.jar
- jsp-api-2.1.jar
- jstl-1.2.jar
- servlet-api-2.5-20081211.jar
- servlet-api-2.5-6.1.14.jar
- standard-1.1.2.jar
Mon web.xml ressemble à ceci:
<?xml version="1.0" encoding="ISO-8859-1"?>
<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 h77p://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>test</display-name>
</web-app>
Mon code ressemble à ceci:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
<h2>Hello World!</h2>
<%= new java.util.Date() %><br/>
${1+2}<br/>
<c:out var="${5+9}"/><br/>
</body>
</html>
J'ai commencé mon serveur Jetty embarqué comme ceci:
Server server = new Server(80);
WebAppContext context = new WebAppContext("pig-1.0-SNAPSHOT.war","/");
server.addHandler(context);
server.start();
J'ai passé les deux derniers jours à expérimenter avec différentes combinaisons de fichiers jar, web.xml configurations, et de la bibliothèque de balises déclarations, mais en vain.
Comment puis-je obtenir un serveur Jetty embarqué et en cours d'exécution avec plein de JSTL soutien?
OriginalL'auteur | 2010-01-27
Vous devez vous connecter pour publier un commentaire.
Jetée 8.0, qui a poussé comme la valeur par défaut lorsque vous utilisez jetty:run, a servlet API 3.0. À partir de cette version de la norme, JSTL standard est censé pour être inclus, et ces taglibs ne peut pas être dans la webapp classpath, seul le classpath. Cependant, 8.0.0.M0 oublié de les inclure.
Précisant 7.1.4.v20100610 aidé pour moi.
Il (était) un bug dans le 8.0M0.
OriginalL'auteur
La jstl taglibs doit être sur serveur classpath. Vous pouvez ajouter un chargeur de classe de chargeur de classe actuel de la chaîne avant de démarrer le serveur. C'est le principe utilisé par start.jar quand il commence un serveur jetty.
Vous devez également ajouter à java commencer argument de ligne de commande.
OriginalL'auteur
Cette collision. Supprimer la
standard-1.1.2.jar
. Vous devez utiliserstandard-1.1.2.jar
seulement avecjstl-1.1.2.jar
. Depuis JSTL 1.2 la norme JAR a été fusionné à la JSTL JAR, résultant en une seulejstl-1.2.jar
fichier.S'assurer que vous n'avez pas extrait tout JSTL fichier JAR et inclus dans chacun de ses TLD fichiers dans le classpath ou réglés par quoi que ce soit dans
web.xml
. Vérifiez également que vous n'avez pas placé dupliqué, la JSTL fichier JAR(s) quelque part d'autre, par exemple dansAppserver/lib
ouJRE/lib
. Pour installer JSTL, fondamentalement, tout ce que vous devez faire est de placer le fichier JAR dans le classpath (par exemple/WEB-INF/lib
) et de déclarer la bibliothèque de tags en haut de fichier JSP. Cela devrait suffire. Vraiment rien de plus à faire, sinon il va entrer en collision quelque part.OriginalL'auteur
@Drew
Merci A Attiré. Elle fonctionne.J'avais cherché sur google pour cela et à la fin jusqu'ici.Ce que mon erreur a été de :
J'ai été en utilisant
Je l'ai changé à partir de ci-dessus pour
et il a obtenu de travail. Aussi, j'ai été en utilisant jstls de dépendance qui je l'ai enlevé.
OriginalL'auteur
J'ai eu le même problème sur la Jetée de 7,
Je l'ai résolu en activant la Jetée de recherche pour le TLD:
Je l'ai fait en définissant un attribut sur le contexte:
Reportez-vous à http://wiki.eclipse.org/Jetty/Howto/Configure_JSP#Using_JSTL_Taglibs_for_Jetty_7.x_and_8.x
pour plus de détails.
Sur mon projet (à l'aide de maven), j'ai norme Tld sont sur le POT "org.apache.taglibs.standard.glassfish-1.2.0.v2011120803.jar" et, théoriquement, il suffirait d'utiliser comme valeur pour ContainerIncludeJarPattern le modèle suivant:
Ça marche, et c'est une confirmation de l'endroit où faire de la jetée trouvé la balise libs, mais j'ai préféré laisser le modèle précédent que j'ai trouvé sur le wiki.eclipse.org page liée ci-dessus.
Il peut être nécessaire de prolonger le motif si vous voulez inclure un tag personnalisé libs.
OriginalL'auteur
J'ai eu le même problème et a trouvé que
http://java.sun.com/jsp/jstl/core
est considéré comme le seul système d'URI et de tous les taglib définitions que d'essayer de définir ce sont ignorés (mais quand référencé, une erreur se produit de toute façon).J'ai utilisé les informations suivantes avant de commencer la Jetée et maintenant ça fonctionne:
merci beaucoup
Vous êtes les bienvenus. Agréable d'être en mesure de donner en retour... 🙂
OriginalL'auteur
En deux étapes:
1)ajouter l'annotation de soutien pour le serveur
//Activer l'analyse de jndi-parties connexes de web.xml et jetty-env.xml, #serveur est
2) ajouter le suivi de l'attribut à la WebAppContext
OriginalL'auteur
Dans votre web.xml, essayez de changer de "h77p://java.soleil.com/xml/ns/j2ee/web-app_2_4.xsd" à commencer par "http://" et voir si cela corrige l'erreur.
Toutefois, cela peut ne pas être la cause sous-jacente, depuis que j'ai eu la même erreur lors de l'utilisation de la jetée-maven-plugin et JSTL taglib-tête dans ma JSP:
Je suis à l'aide d'un out-of-the-box Spring MVC modèle de SpringSource Tool Suite, alors je ne suis pas sûr de savoir pourquoi le plugin Maven pour Jetty étouffe.
Et seulement javax.servlet:jstl:1.2 est répertorié dans mon POM dépendances, depuis maintenant obsolètes taglibs:standard:1.1.2, qui était une suggestion donnée ci-dessus.
OriginalL'auteur
J'ai également eu les mêmes problèmes. Je l'ai corrigé en ajoutant le code ci-dessous:
Peut-être que vous pouvez essayer. Veuillez remplacer TLD_JAR_NAMES avec votre vrai TLD Pot noms.
OriginalL'auteur
En ajoutant le code suivant je me suis débarrassé du problème:
Je suis à l'aide de la jetée-runner 8.
OriginalL'auteur