web-dev-qa-db-fra.com

INFO: aucun type Spring WebApplicationInitializer détecté sur classpath

J'ai un projet de printemps qui fonctionne correctement sur mon serveur Tomcat7 lorsque je déploie depuis Eclipse: Exécuter en tant que >> Exécuter sur un serveur . Dans l'onglet Eclipse "Serveurs", je vois:

Servers
 Tomcat v7.0 Server at localhost [Started, Synchronized]
   my_project [Synchronized]
     spring-web-3.2.4-RELEASE.jar

Mon projet:

  • n'utilise pas web.xml, j'utilise javaconf @ annotations.
  • n'utilise pas maven, j'utilise une bibliothèque utilisateur

Je vois que le projet est en:

/srv/applications/workspace/.metadata/.plugins/org.Eclipse.wst.server.core/tmp0

Et, je vois aussi les dossiers: conf, logs, temp, webapps, travail, wtpwebapps

Je confirme que tout fonctionne correctement sur mon serveur Tomcat7 lorsque je déploie depuis Eclipse!

Dans la console Eclipse, je reçois:

Apr 08, 2014 3:26:59 PM org.Apache.Tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.Eclipse.jst.j2ee.server:my_project' did not find a matching property.
Apr 08, 2014 3:27:00 PM org.Apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8888"]
Apr 08, 2014 3:27:00 PM org.Apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8843"]
Apr 08, 2014 3:27:01 PM org.Apache.catalina.startup.Catalina load
INFO: Initialization processed in 3215 ms
Apr 08, 2014 3:27:01 PM org.Apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Apr 08, 2014 3:27:01 PM org.Apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.26
Apr 08, 2014 3:27:11 PM org.Apache.catalina.core.ApplicationContext log
INFO: Spring WebApplicationInitializers detected on classpath: [my_project.web.context.WebApplicationInitializer@3599e94c]
Apr 08, 2014 3:27:12 PM org.Apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Apr 08, 2014 3:27:24 PM org.Apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'dispatcher'
Apr 08, 2014 3:27:24 PM org.Apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8888"]
Apr 08, 2014 3:27:24 PM org.Apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8843"]
Apr 08, 2014 3:27:24 PM org.Apache.catalina.startup.Catalina start
INFO: Server startup in 23821 ms

Maintenant: Le problème C'est lorsque je déploie la même application (à l'aide d'un fichier .war) sur le même serveur Tomcat7/var/lib/Tomcat7/webapps

Je peux ouvrir ma page initiale MAIS sans données,

Je vois dans le journal:

INFO: No Spring WebApplicationInitializer types detected on classpath

Lorsque je redémarre Tomcat7, je reçois le fichier journal:

INFO: Destroying ProtocolHandler ["http-bio-8843"]
Apr 8, 2014 3:25:30 PM org.Apache.Tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.Eclipse.jst.j2ee.server:my_project' did not find a matching property.
Apr 8, 2014 3:25:30 PM org.Apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8888"]
Apr 8, 2014 3:25:31 PM org.Apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8843"]
Apr 8, 2014 3:25:31 PM org.Apache.catalina.startup.Catalina load
INFO: Initialization processed in 1664 ms
Apr 8, 2014 3:25:31 PM org.Apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Apr 8, 2014 3:25:31 PM org.Apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.26
Apr 8, 2014 3:25:38 PM org.Apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8888"]
Apr 8, 2014 3:25:38 PM org.Apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8843"]
Apr 8, 2014 3:25:38 PM org.Apache.catalina.startup.Catalina start
INFO: Server startup in 7576 ms

J'ai trouvé l'erreur: J'ai une bibliothèque qui a été construite en utilisant jdk 1.6. Le contrôleur principal et les composants Spring sont dans cette bibliothèque. Et comment jdk 1.7 est utilisé, il ne trouve pas les classes construites dans 1.6. 

La solution a été construite en utilisant "le niveau de conformité du compilateur: 1.7" et "la compatibilité des fichiers .class générés: 1.6", "la compatibilité source: 1.6".

J'ai configuré cette option dans Eclipse: Preferences\Java\Compiler.

Merci à tous.

19

Ma raison idiote était: Construire automatiquement était désactivé!

4
Anand Rockzz

J'avais ce message d'information "Aucun type Spring WebApplicationInitializer détecté sur classpath" lors du déploiement d'un WAR avec des beans d'intégration spring sur le serveur WebLogic . En fait, j'ai pu constater que l'URL du servlet renvoyait 404 Introuvable et à côté de ce message d'information. ton "No Spring ... etc" dans les journaux du serveur, rien d’autre n’était apparemment erroné dans ma config de spring; pas d'erreurs de construction ou de déploiement, pas de plaintes ..__ En effet, je soupçonnais que le fichier beans.xml (Spring contexte XML) n'était pas du tout détecté et que cela était lié à l'organisation très spécifique des artefacts dans jDeveloper d'Oracle. La solution consiste à jouer avec prudence avec les "contributeurs" et les "filtres" de la catégorie WEB-INF/classes lorsque vous modifiez votre profil de déploiement sous la rubrique "déploiement" dans les propriétés du projet.

Précisément, je vous conseillerais de nommer votre contexte de printemps par le paramètre par défaut "beans.xml" de jDeveloper et de le placer côte à côte dans le sous-répertoire WEB-INF lui-même (sous le chemin source de votre application Web, par exemple, <... chemin du projet>/public_html /). Ensuite, dans la catégorie WEB-INF/classes (lors de la modification du profil de déploiement), vous pouvez vérifier le répertoire racine HTML du projet dans la liste "contributor", sélectionner ensuite le fichier beans.xml dans les filtres et vous assurer que votre fichier web.xml valeur context-param comme classpath: beans.xml.

Une fois que cela a été corrigé, j'ai pu progresser et après quelques modifications et implémentations de configuration de beans supplémentaires, le message "Aucun type de Spring WebApplicationInitializer détecté sur classpath" est revenu! En fait, je n'ai pas remarqué quand et pourquoi exactement cela est revenu. Cette deuxième fois, j’ai ajouté un 

public class HttpGatewayInit implements WebApplicationInitializer { ... }

qui implémente des méthodes héritées vides, et l’application entière fonctionne bien!

... Si vous estimez que le développement Java EE est devenu un peu trop fou avec des cascades de fichiers de configuration XML (certains modifiés manuellement, d'autres via des assistants) interprétés par des cascades d'initialiseurs de variantes, laissez-moi insister pour que je partage entièrement votre point.

2
berhauz

Assurez-vous que votre log4j est configuré correctement, il y a probablement une exception qui est levée, mais vous voyez seulement la moitié de l'image.

Veuillez consulter https://stackoverflow.com/a/16817018/1249304

2
Sabry Shawally

J'ai aussi eu le même problème. Mon maven avait Tomcat7 plugin mais l'environnement JRE était de 1,6. J'ai changé mon Tomcat7 en Tomcat6 et l'erreur a disparu.

1
Akshay

Ceci est une erreur courante, assurez-vous que votre fichier.war est construit correctement. Ouvrez simplement le fichier .war et vérifiez que votre WebApplicationInitializer est présent.

0
oleh.kovaliuk

J'ai eu un problème similaire avec Tomcat 8 intégré dans l'application Java7. 

Lorsque j'ai lancé Tomcat dans mon application, cela a fonctionné. Mais lorsque je l'ai lancé via Maven à des fins de test d'intégration, j'ai obtenu l'erreur suivante: "Aucun type Spring WebApplicationInitializer détecté sur le chemin d'accès aux classes". 

Je l'ai corrigé en mettant à jour les dépendances org.Apache.Tomcat.embed:Tomcat-embed-* de la version 8.0.29 à 8.0.47. 

0
Antoine