Java.lang.ClassNotFoundException de servlet tomcat avec eclipse [dupliquer]

cette question a déjà une réponse ici:

  • Servlet renvoie "d'État HTTP 404 La ressource demandée (/servlet) n'est pas disponible" 3 réponses

je commence à développer une application Web java dans eclipse en utilisant des servlets et je la teste avec tomcat server sur mon localhost. J'ai déployé l'application dans tomcat, mais quand j'essaie de charger l'url cible dans mon navigateur, j'obtiens la trace de pile suivante:

Jul 31, 2013 2:58:31 PM org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet ImageServlet as unavailable
Jul 31, 2013 2:58:31 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Allocate exception for servlet ImageServlet
java.lang.ClassNotFoundException: test.ImageServlet
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:527)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:509)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:137)
        at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:865)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:136)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)  

la classe ImageServlet est très clairement située dans le dossier myproject/src/test de mon espace de travail eclipse, où myproject est le nom du projet eclipse, et test est le paquet.

web.le xml est situé dans myproject/web/WEB-INF/web.xml et myproject.xml est situé à myproject / myproject.xml

le contenu du web.xml sont:

<?xml version="1.0"?>
<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 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">

    <servlet>
        <servlet-name>ImageServlet</servlet-name>
        <servlet-class>test.ImageServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ImageServlet</servlet-name>
        <url-pattern>/image</url-pattern>
    </servlet-mapping>
</web-app>

et le contenu de myproject.xml sont:

est-ce que quelqu'un peut me montrer comment réparer mon code pour qu'il ne jette pas la ClassNotFoundException?

9
demandé sur ROMANIA_engineer 2013-08-01 02:41:03

7 réponses

parfois, lors de la création de filtres ou de servlets, le fichier de classe n'est pas généré dans le dossier build dans eclipse.Nettoyez l'application et construisez-la Une fois, a.fichier de classe est générée dans ce qui précède dit chemin. Cela supprime l'erreur de classe not found dans certains cas.

19
répondu srinivas 2014-06-30 17:16:17

c'est un projet maven? dans maven projects src / test est l'emplacement pour les tests unitaires et est exclu de la construction et de la guerre, essayer de changer le nom du paquet et essayer à nouveau.

2
répondu Grubhart 2013-07-31 22:44:47

on dirait que vous construisez un projet basé sur le Maven, et vous mettez votre classe au mauvais endroit

Vous devez utiliser src/main/java pour mettre vos classes, et src/test/java pour mettre vos tests (c'est à dire, JUnit tests, si vous en avez).

2
répondu Cristian Meneses 2013-07-31 22:48:02

a récemment rencontré ce problème avec l'un de mes projets(je dis cela parce que l'autre fonctionnait parfaitement bien malgré l'utilisation des mêmes pots et tout). J'ai essayé de nettoyer le projet plusieurs fois, j'ai effacé le .dossier de métadonnées plusieurs fois. Rien n'a fonctionné. Les classes n'ont tout simplement pas été compilées.

ce qui a fonctionné était de supprimer une bibliothèque jre6 non liée dans le chemin de construction du projet.

2
répondu anuvab1911 2015-12-24 06:59:14
  1. cliquez-Droit sur le projet et sélectionnez "Propriétés"
  2. Aller à ", le Déploiement de l'Assemblée"
  3. assurez-vous d'avoir deux correspondances comme indiqué sur l'image suivante. déploiement Web de l'assemblée dans eclipse . Si ce n'est pas le cas, ajoutez les correspondances manquantes.
  4. cliquez sur Appliquer.
  5. Nettoyer,construire et exécuter votre projet.
2
répondu Mrinal N 2016-07-27 11:08:27

S'il n'y a pas de classe test.ImageServlet dans votre déploiement WEB-INF/classes, Tomcat ne pourra pas la trouver.

à mon avis, vous n'avez pas compilé, empaqueté et déployé le fichier WAR correctement sur Tomcat.

1
répondu duffymo 2013-07-31 22:44:17

Si votre projet est un projet Maven, vous pouvez essayer de le nettoyer. Cliquez sur Projet > Nettoyer et sélectionnez le projet à nettoyer.

parfois, si vous utilisez Maven avec l'une ou l'autre console et Eclipse, la cible devient "folle" et la seule façon de continuer est de nettoyer le projet.

0
répondu russellhoff 2016-08-05 07:53:32