java.lang.LinkageError: javax.servlet.jsp.JspApplicationContext.getExpressionFactory
Lorsque j'essaie d'exécuter mon application sur Tomcat 7, j'ai eu l'exception suivante:
exception
javax.servlet.ServletException: java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.getExpressionFactory()Ljavax/el/ExpressionFactory;
" the class loader (instance of org/apache/jasper/servlet/JasperLoader) of the current class, org/apache/jsp/index_jsp, and the class loader (instance of org/apache/catalina/loader/StandardClassLoader) for resolved class, javax/servlet/jsp/JspApplicationContext,
have different Class objects for the type javax/el/ExpressionFactory used in the signature
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:343)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.getExpressionFactory()Ljavax/el/ExpressionFactory;" the class loader (instance of org/apache/jasper/servlet/JasperLoader) of the current class, org/apache/jsp/index_jsp, and the class loader (instance of org/apache/catalina/loader/StandardClassLoader) for resolved class, javax/servlet/jsp/JspApplicationContext, have different Class objects for the type javax/el/ExpressionFactory used in the signature
org.apache.jsp.index_jsp._jspInit(index_jsp.java:31)
org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:49)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:180)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
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)
Il semble qu'il y a un conflit entre deux .jar
librairies, mais je ne sais pas qui ils sont. Comment les comprendre et les résoudre?
Vous devez vous connecter pour publier un commentaire.
Qui va se passer quand vous serveur des bibliothèques spécifiques d'un autre serveur, faire/version dans le
/WEB-INF/lib
de votre application web, tels quejsp-api.jar
,el-api.jar
,servlet-api.jar
, etc. Vous devez supprimer tous. Le/WEB-INF/lib
ne doit pas contenir n'importe quel serveur des bibliothèques spécifiques. Ils appartient dans le serveur (Tomcat a dans son/lib
dossier déjà).C'est par la voie d'une jolie commune erreur de débutant à chaque fois qu'ils rencontrent des erreurs de compilation de la JSP/Servlet API dans leur projet IDE. Cela aurait été résolu différemment, notamment en intégrant le serveur dans l'IDE et l'ajout du serveur en tant que "Cible d'exécution de ce projet.
Voir aussi:
Vous avez deux options pour ajouter à vos projets les bibliothèques, comme
jsp-api.jar
,el-api.jar
,servlet-api.jar
, etc:Java Build Path
;provided
portée pour chacun d'eux, par exemple:Consulter cette page
http://www.jarfinder.com/index.php/java/info/org.apache.jasper.runtime.HttpJspBase
Trouver qui sont les pots que vous avez utilisés dans le présent. Removeone si vous trouvez deux.:)
J'ai été coincé avec cette erreur pour un temps très long et ce fil enregistré très peu de mon temps. L'ajout de quelques recherches que j'ai fait avant de résoudre ce problème. Oui nous avons besoin de supprimer des bibliothèques comme
jsp-api.jar, el-api.jar, servlet-api.jar
de/WEB-INF/lib
dossier. Mais comment?Dans mon cas, je suis en utilisant Apache Ivy comme une dépendance de la crèche et utilisé Spring MVC. Il télécharge toutes les dépendances avec les bibliothèques mentionnées ci-dessus. Au moment de l'exécution de ces conflits avec les Api fournies par Tomcat bibliothèques. La solution la plus Simple serait d'exclure ces pots de dépendances ou de créer des configurations et de les inclure dans les bibliothèques de la compilation de configuration. Ce qui a fonctionné pour moi est l'exclusion de ces bibliothèques.
C'est étrange ERREUR que j'ai jamais
Après recherche j'ai trouvé ce Causes et la solution
Je suis en utilisant le Printemps donc, à mon @printemps des bibliothèques j'ai déjà le pot comme
Servlet-api.jar
oujavax-servlet-api.jar
jsp-api.jar
oujavax-servlet-jsp.jar
Mais ce n'est pas compatible wid mon serveur TOMCAT
Alors tout simplement je supprime ces deux bocaux de mes construits chemin d'accès et le déploiement de l'assemblée
Maintenant, je goto mon
"E:\Locker\Software\apache-tomcat-6.0.44\lib"
où sont mes serveur Tomcat et ajouter ces deux pots pour mon projet