it-swarm.com.de

INFO: Es wurden keine Spring-WebApplicationInitializer-Typen für den Klassenpfad gefunden

Ich habe ein Frühlingsprojekt, das auf meinem Tomcat7-Server ordnungsgemäß ausgeführt wird, wenn ich von Eclipse aus bereitstelle: Ausführen als >> Ausführen auf Server . Im Eclipse-Tab "Server" sehe ich:

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

Mein Projekt:

  • verwendet keine web.xml, ich verwende javaconf @ -Anmerkungen.
  • benutze maven nicht, ich verwende eine Benutzerbibliothek

Ich sehe, dass das Projekt in:

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

Und ich sehe auch die Ordner: conf, logs, temp, webapps, work, wtpwebapps

Ich bestätige, dass auf meinem Tomcat7-Server alles einwandfrei läuft, wenn ich Eclipse bereitstelle!

In der Eclipse-Konsole bekomme ich:

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: [[email protected]]
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

Jetzt: Das Problem Es ist, wenn ich dieselbe App (mithilfe einer Datei .war) auf demselben Tomcat7-Server/var/lib/Tomcat7/webapps bereitstelle

Ich kann meine erste Seite web ABER ohne Daten öffnen,

Ich sehe im Protokoll:

INFO: No Spring WebApplicationInitializer types detected on classpath

Wenn ich Tomcat7 neu starte, bekomme ich die Protokolldatei:

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

Ich habe den Fehler gefunden: Ich habe eine Bibliothek, die mit jdk 1.6 erstellt wurde. Der Spring-Hauptcontroller und die Komponenten befinden sich in dieser Bibliothek. Und wie ich jdk 1.7 verwende, findet es die in 1.6 gebauten Klassen nicht. 

Die Lösung wurde unter Verwendung von "Compiler-Compliance-Level: 1.7" und "Kompatibilität mit generierten .class-Dateien: 1.6", "Quellkompatibilität: 1.6" erstellt.

Ich habe diese Option in Eclipse eingerichtet: Preferences\Java\Compiler.

Danke an alle.

Mein dummer Grund war: Automatisch bauen wurde deaktiviert!

4
Anand Rockzz

Ich hatte diese Informationsnachricht "Kein Spring-WebApplicationInitializer-Typen auf Klassenpfad erkannt", während ein WAR mit Spring-Integrations-Beans in einem WebLogic-Server bereitgestellt wurde Tatsächlich konnte ich feststellen, dass die Servlet-URL neben der Informationsnachricht 404 Not Found und ein Negativ zurückgab ton "No Spring ... etc" in Serverprotokollen, sonst nichts war scheinbar in meiner Frühjahrskonfiguration fehlerhaft; Keine Build- oder Deployment-Fehler, keine Beschwerden ... In der Tat hatte ich den Verdacht, dass die beans.xml (Frühlingskontext-XML) überhaupt nicht aufgegriffen wurde und dass dies an die sehr spezifische Organisation von Artefakten in Oracle jDeveloper gebunden war. Die Lösung besteht darin, sorgfältig mit den Mitwirkenden und Filtern für die Kategorie WEB-INF/Klassen zu spielen, wenn Sie Ihr Bereitstellungsprofil unter dem Thema "Bereitstellung" in den Projekteigenschaften bearbeiten.

Genauer gesagt, würde ich Ihnen raten, Ihren Spring-Kontext durch den jDeveloper-Standard "beans.xml" zu benennen und ihn neben dem WEB-INF-Unterverzeichnis selbst zu platzieren (unter Ihrem Webapplikations-Quellpfad, z. B. <... Ihrem Projektpfad>)/public_html /). Dann können Sie in der Kategorie WEB-INF/classes (beim Bearbeiten des Implementierungsprofils) das Project HTML-Stammverzeichnis in der Liste der Mitwirkenden prüfen und dann die beans.xml in den Filtern auswählen und dann sicherstellen, dass Ihre web.xml-Funktionen a Wert für context-param wie classpath: beans.xml.

Nachdem das Problem behoben war, konnte ich fortfahren und nach einigen weiteren Bean-Konfigurationsänderungen und -Implementierungen kam die Meldung "Kein Spring-WebApplicationInitializer-Typen auf classpath erkannt" zurück! Eigentlich habe ich nicht gemerkt, wann und warum genau es zurückkam. Dieses zweite Mal fügte ich hinzu: a 

public class HttpGatewayInit implements WebApplicationInitializer { ... }

was leere ererbte Methoden implementiert, und die gesamte Anwendung funktioniert gut!

Wenn Sie der Meinung sind, dass die Entwicklung von Java EE durch Kaskaden von XML-Konfigurationsdateien (einige manuell bearbeitet, andere durch Assistenten), die von Kaskaden variierender Initialisierer interpretiert werden, ein wenig zu verrückt geworden ist, lassen Sie mich darauf bestehen, dass ich Ihre Meinung voll und ganz teile.

2
berhauz

Stellen Sie sicher, dass Ihr log4j richtig konfiguriert ist. Es wird wahrscheinlich eine Ausnahme ausgelöst, aber Sie sehen nur die Hälfte des Bildes.

Siehe https://stackoverflow.com/a/16817018/1249304

2
Sabry Shawally

Ich hatte auch das gleiche Problem. Mein Maven hatte ein Tomcat7-Plugin, aber die JRE-Umgebung war 1.6. Ich habe mein Tomcat7 in Tomcat6 geändert und der Fehler war weg.

1
Akshay

Dies ist ein häufiger Fehler. Stellen Sie sicher, dass Ihre file.war korrekt erstellt wurde. Öffnen Sie einfach die .war-Datei und prüfen Sie, ob Ihr WebApplicationInitializer vorhanden ist.

0
oleh.kovaliuk

Ich hatte ein ähnliches Problem mit Tomcat 8, das in Java7-Anwendung eingebettet war. 

Als ich Tomcat in meiner Anwendung gestartet habe, hat es funktioniert. Als ich es jedoch zu Integrations-Testzwecken über Maven startete, erhielt ich folgende Fehlermeldung: "Keine Spring-WebApplicationInitializer-Typen in classpath erkannt". 

Ich habe es behoben, indem ich org.Apache.Tomcat.embed:Tomcat-embed-*-Abhängigkeiten von Version 8.0.29 auf 8.0.47 aktualisiert habe. 

0
Antoine