9
votes

La méthode getjspapplicationContext (servleContext) est indéfinie pour le type JSPSFactory

C'est ce que j'ai eu sur l'écran du navigateur lorsque j'essaie d'exécuter le fichier JSP.

La méthode getjspapplicationContext (servleContext) est indéfinie pour le type JSPFFactory

StackTrace:

org.apache.jasper.compiler.defaulterrorhandler.javacerror (Defaulterrorhandler.java:92) org.apache.jasper.compiler.errordispatcher.javacerror (errordispatcher.java:330) org.apache.jasper.compiler.jdtcompiler.generateclass (jdtcompiler.java:439) org.apache.jasper.compiler.compiler.comPile (compiler.java:334) org.apache.jasper.compiler.compiler.comPile (compiler.java:312) org.apache.jasper.compiler.compiler.comPile (compiler.java:299) org.apache.jasper.jspcompilationContext.comPilet (jspcompilationContext.java:586) org.apache.jasper.servlet.jspsservletwrapper.Service (JSPServilletWrapper.java:317) org.apache.jasper.servlet.jspservlet.servicejspfile (jspservlet.java:342) org.apache.jasper.servlet.jspservlet.service (jspservlet.java:267) javax.servlet.http.httpservlet.service (httpservlet.java:856)

et l'exception Jasper est jetée sur la fenêtre Tomcat lorsque je l'ai couru.


0 commentaires

4 Réponses :


33
votes

La méthode getjspapplicationContext (servleContext) est indéfinie pour le type JSPFFactory

qui Méthode a été introduite dans JSP 2.1. Il y a 3 causes pour ce problème:

  1. Vous utilisez une version trop ancienne du conteneur JSP (vous avez besoin d'exemple au moins Tomcat 6.0 ).

  2. Vous avez déclaré la mauvaise version de servlet dans web.xml . JSP 2.1 va de pair avec servlet 2.5, donc votre web.xml doit au moins être déclaré selon la spécification Servlet 2.5 (vous avez toujours besoin d'un servlet 2.5 / JSP 2.1 Capable servletContainer pour cela). < / p>

  3. Vous avez dupliqué des bibliothèques spécifiques aux VerserVerserver plus anciennes dans les / Web-Inf / Lib , comme servlet-Api.jar , jsp -api.jar et ainsi de suite. Vous devriez jamais faire cela. Cela n'entraînera que des collisions de classement. Éliminez-les d'eux dans votre service Web et laissez-les / intact-les dans l'Appserver.


7 commentaires

Ingcarlos, comment avez-vous résolu votre problème? Quelle méthode avez-vous utilisée?


@janwen: Vérifiez simplement l'une des causes énumérées.


Merci Balusc, Cause1 et Cause2 est OK.Je Supprimer Servlet-Api.jar et JSP-API.JAR dans mon projet.But Toujours [Code] Une erreur est survenue à la ligne: 22 Dans le fichier Java généré, la méthode getjspapplicationContext (servleContext) est indéfini pour le type JSPFFactory [/ code]


@janwen: Ensuite, ils errent toujours ailleurs dans la classe de classe où ils n'appartiennent pas. Par exemple, le / lib ou / lib / ext dossier de la jre. Ou vous avez d'autres pots contenant une API JSP obsolète, telle que javaee.jar . Après tout, votre / web-inf / lib ne doit absolument pas contenir d'autres bibliothèques que celles requises par la WebApp elle-même. Voir aussi cette question connexe: Stackoverflow.com/Questtions/4076601/...


Non, je vois les dossiers Web-Inf / Lib de Tomcat6, il n'y a pas de bocaux.


@janwen: tomcat6! = JRE. Vous devez supprimer N'importe quel Bocons spécifiques au conteneur de servlet que vous avez déjà téléchargé / copié / déplacé / déplacé n'importe où dans votre environnement.


Laissez-nous Continuez cette discussion en chat



1
votes

La méthode getjspapplicationContext (servleContext) est indéfinie pour Le type JSPFFactory

Cela peut également se produire lorsque votre projet nécessite une référence à un serveur d'exécution:

  • Faites un clic droit sur votre projet dans «Project Explorer» d'Eclipse
  • Choisissez "Construction Path | Configurer le chemin de construction"
  • Cliquez sur l'onglet "Bibliothèques"
  • Cliquez sur "Ajouter une bibliothèque"
  • Sélectionnez "Server Runtime" et cliquez sur "Suivant"
  • Choisissez "Apache Tomcat 7" ou quelle que soit la version de votre serveur d'exécution.

    Remarque: cette erreur peut également se produire pour les créations de fourmis, et pour ce cas, vous devez faire référence à une exécution cible dans votre fichier Build.xml ... Les références suivantes font référence à une installation de Tomcat locale et utilise Ses dossiers "lib" lors de la compilation: xxx

    accroché de cette URL :


0 commentaires

4
votes
<dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>servlet-api</artifactId>
   <version>${servlet.version}</version>
   <scope>provided</scope>
</dependency> 
also fixes the issues

0 commentaires

1
votes

Pour Maven, j'ai également dû ajouter la dépendance JSP-API en tant que pot fourni comme celui-ci: (une autre dépendance le tirait, je ne pouvais jamais comprendre lequel, mais cela fixait-le) xxx


0 commentaires