9
votes

Servlet.Service () lance ClasscastException

J'ai une application Web Java. J'ai mis en place ce nouveau projet et obtenue l'exception suivante lorsque j'exécute une JSP,

Oct 10, 2012 3:01:49 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.ClassCastException: org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.AnnotationProcessor
    at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:151)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:340)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:619)
Oct 10, 2012 3:01:57 AM org.apache.catalina.loader.WebappClassLoader modified
INFO:     Additional JARs have been added : 'activation-1.1.jar'
Oct 10, 2012 3:01:57 AM org.apache.catalina.core.StandardContext reload
INFO: Reloading this Context has started
Oct 10, 2012 3:01:57 AM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
SEVERE: The web application [/AutoUpgrade] registered the JBDC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
Oct 10, 2012 3:01:57 AM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/AutoUpgrade] appears to have started a thread named [Timer-0] but has failed to stop it. This is very likely to create a memory leak.


2 commentaires

Le problème est-il avec un JSP spécifique ou avec tous les JSP? Comment faites-vous des dépendances manifester - Maven / Ivy / Gradle ou simplement copier des pots à la main? Vous pouvez consulter votre liste de dépendances, pour voir si une bibliothèque de Tomcat est incluse en tant que dépendance du projet - qui sera le plus susceptible d'être le problème.


Le problème est avec tous les JSP. J'ai copié tous les fichiers JAR à la main dans mon dossier LIB de projets. Va vérifier les dépendances dans ma bibliothèque Tomcat et vous le faire savoir


3 Réponses :


0
votes

Si le nettoyage de votre projet n'a pas aidé, vous devez peut-être Effacer votre cache .

Le cache NetBeans est situé quelque part ...
C: \ documents et paramètres \ moi-même.netbeans \ 7.0 \ var \ cache


1 commentaires

Nettoyage du cache dans l'éclipse Dosent résolvez le problème. Je pense que le problème doit être à cause des bocaux manquants / incompatibles



10
votes

Cela peut se produire lorsque vous avez des fichiers JAR spécifiques à Tomcat dans votre / web-inf / lib . Ça n'est pas correct. Vous devriez Supprimer Tous les fichiers JAR SPAR SPARSContainer à partir de là. Ils n'appartiennent pas du tout. Ils sont censés être déjà fournis par le servletContainer lui-même. Le / web-inf / lib ne doit contenir que des bibliothèques spécifiques à la webapp elle-même qui ne sont pas fournies par le servletContainer.

Si vous les avez placées là-bas à la suite d'une tentative inhérente à résoudre des erreurs de compilation, veuillez lire attentivement cette réponse comment résoudre la bonne façon: Comment importer l'API Javax.Servlet dans mon projet Eclipse? < / p>


5 commentaires

Désolé pour la réponse tardive. J'ai été rattrapé dans d'autres projets. Votre réponse a un sens complet et je me souviens d'utiliser un pot spécifique à servletsContainer dans mon Web-Inf / Lib. Supprimera un tel pot en conflit et vous permettra de savoir comment les choses fonctionnent! Merci,


Merci Balusc, nettoyant les pots dans / lib résous le problème!


Hm, bien mon problème est que j'ai besoin d'accéder à org.apache.catalina, et je ne sais pas comment faire cela sans l'ajouter en tant que ressource. Des idées?


@JOSH: Suivez simplement le lien dans ma réponse.


Qu'en est-il du moment où les pots sont indirectement inclus par une dépendance POM.XML? Ou lorsque vous avez besoin d'une version plus récente d'un pot que celui fourni par le conteneur de servlet?



0
votes

Supprimer les éléments suivants de la lib.

  1. Vérifiez le même pot avec différentes versions
  2. Tous les bocaux liés à Catalina
  3. el-api.jar
  4. JSP-API.JAR

    Cela fonctionnera certainement.


0 commentaires