2010-03-16 4 views
0

J'ai créé une application Web Java et l'ai compressée dans un fichier .war et l'ai testée sur mon serveur Tomcat local et elle fonctionne correctement. Mais quand je l'ai déployé sur le serveur de mon client, il montre une erreur. Selon le serveur distant (serveur de mon client), il ne trouve pas un fichier tld emballé dans un fichier jar que j'avais placé dans le répertoire WEB-INF/lib. Mais quand j'ai vérifié le répertoire WEB-INF/lib pour le fichier jar, j'ai trouvé que c'était là.Java - Problème lors du déploiement de l'application Web

Le contenu de META-INF/MANIFEST.MF est la suivante:

Manifest-Version: 1.0 
Class-Path: 

Je pense qu'il n'y a pas besoin de mentionner explicitement le classpath de WEB-INF/lib répertoire tel qu'il est dans le classpath de toute application Web par défaut. Puis, pourquoi le serveur ne peut pas trouver le fichier jar dans le répertoire lib lorsque je l'ai déployé sur un serveur distant et pourquoi il fonctionne lorsque j'ai déployé la même application sur mon serveur local.

J'ai posté une question à Struts 1 - struts-taglib.jar is not being found by my web application mais j'ai trouvé que le problème était inhabituel car personne ne pouvait y répondre.

Mes questions sont les suivantes:

Q1. WEB-INF/lib reste-t-il sur le chemin de classe si je laisse vide l'entrée classpath comme indiqué ci-dessus dans le fichier MANIFEST.MF ou si je devrais supprimer complètement l'entrée classpath du fichier ou entrer explicitement Class-Path: /WEB-INF/lib comme entrée de chemin de classe?

Q2. J'ai JSP pages, Servlet s et quelques classes auxiliaires dans l'application web. Les pages JSP sont situées à la racine. Les servlets et les classes auxiliaires se trouvent dans le dossier WEB-INF/classes. Y a-t-il un problème si mes classes auxiliaires se trouvent dans le dossier WEB-INF/classes?

Note: Veuillez noter que cette question n'est pas la même que ma précédente question. C'est une question de suivi de ma question précédente.

Les deux serveurs (locaux et distants) sont des serveurs Tomcat.

+0

Essayez de donner le classpath explicitement. – Zaki

+2

l'un des classiques, "je jure son travail sur ma machine" questions :) – medopal

+1

@medopal rien de drôle ici ...ne postez pas de commentaires inutiles –

Répondre

1

Ne créez pas une entrée Class-Path vide dans le manifeste, supprimez-la! Normalement, vous n'avez besoin d'aucune entrée Class-Path dans une application Web. Cette entrée est plus habituelle pour les pots runnable.

Il n'y a aucun problème avec vos classes auxiliaires. WEB-INF/classes est toujours la première entrée du classpath suivi par les fichiers JAR de WEB-INF/lib. Ainsi, les JSP compilées par le conteneur ne doivent pas avoir de prblem utilisant des classes incluses.

Avez-vous inclus votre taglib dans le web.xml avec un taglib-location approprié?

+0

Tout cela est correct. J'ajouterai que je crois que les fichiers .tld appartiennent à WEB-INF, pas à WEB-INF/lib. –

-1

Cela peut se produire en particulier dans la production si les points taglib-location à un emplacement Internet (c.-à-http) et les boîtes de production ne peuvent pas être en mesure d'accéder à Internet (en raison de nombreuses restrictions pare-feu)

+0

Apparemment quelqu'un a downvoted une suggestion similaire mais je suis très sûr d'avoir déjà fait face à ce problème avec spring & activemq-core-5.2.0.jar où il valide les éléments du schéma. Ce fichier contient un fichier spring.schemas avec l'entrée http \: //activemq.apache.org/schema/core/activemq-core.xsd=activemq.xsd (qui indique à partir de quel emplacement trouver le fichier xsd) mais je avait mis l'URL du schéma à tort comme .../activemq-core-5.2.0.xsd –

+1

la valeur d'url de l'attribut uri ne signifie pas que le serveur doit accéder à internet pour trouver le fichier tld. Les fichiers Tld ont leur propre uri qui doit correspondre à l'uri de la directive taglib à inclure –

Questions connexes