Spring / Java error: Namespace-Element 'annotation-config' ... auf JDK 1.5 und höher
Habe ich die Frühjahr - /Java-Anwendung, die kompiliert wird, mit Compiler compliance level 1.5.
Habe ich eine neue Linux-setup, wo ich heruntergeladen Apache Tomcat 8.0.8.
Ich heruntergeladen JDK 8u5.
Ich den Pfad in der bash wie folgt:
PATH=$PATH:$HOME/jdk1.8.0_05/bin
export PATH
Java -version meldet:
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)
Eingestellt und in setnenv.sh (für Tomcat):
JDK_HOME=/home/userid/jdk1.8.0_05
Wenn ich die Bereitstellung der war-Datei bekomme ich folgende Fehlermeldung.
Ich denke, dass Tomcat nicht scheinen, verwenden Sie den Java habe ich installiert.
Ich folgte den Anweisungen von setup.
PS: ich habe auch versucht JRE statt JDK und das gleiche Problem.
22-May-2014 11:34:54.070 INFO [http-nio-8080-exec-4] org.apache.catalina.core.ApplicationContext.log Initializing Spring root WebApplicationContext
22-May-2014 11:34:54.512 SEVERE [http-nio-8080-exec-4] org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from file [/home/userid/apache-tomcat-8.0.8/webapps/myApplication-QA/WEB-INF/classes/config/spring/securityContext.xml]; nested exception is **java.lang.IllegalStateException: Context namespace element 'annotation-config' and its parser class [org.springframework.context.annotation.AnnotationConfigBeanDefinitionParser] are only available on JDK 1.5 and higher**
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:420)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:342)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:92)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:123)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:423)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:353)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4750)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5170)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1270)
at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:673)
at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:221)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:644)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:301)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:213)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:615)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:78)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1033)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:652)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalStateException: Context namespace element 'annotation-config' and its parser class [org.springframework.context.annotation.AnnotationConfigBeanDefinitionParser] are only available on JDK 1.5 and higher
at org.springframework.context.config.ContextNamespaceHandler$1.parse(ContextNamespaceHandler.java:65)
at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:69)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1253)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1243)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:135)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:92)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:507)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:398)
... 49 more
22-May-2014 11:34:54.518 INFO [http-nio-8080-exec-4] org.apache.catalina.core.ApplicationContext.log Closing Spring root WebApplicationContext
InformationsquelleAutor der Frage user3665944 | 2014-05-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der Klasse, das werfen der exception ist mit diesem code zu überprüfen Java version:
So, wenn der Frühling 2.5 veröffentlicht wurde, wird der code nicht angenommen es läuft in einer Java-version, die später als 1,7. Für Java 8 und darüber hinaus, der obige code wird davon ausgegangen Standard-version 1.4. Weil dieses, die Annotationen zu einem Teil beschweren.
Denke ich, müssen Sie entweder aktualisieren Sie Ihre Frühjahrs-version oder verwenden Sie Java 7. Spring 2.5 wurde EOLed seit geraumer Zeit jetzt, sowieso.
InformationsquelleAutor der Antwort Andrei Stefan
Ich habe das ähnliche problem. Old Spring MVC/Spring-Faces-Anwendung unter Frühling 2.5.5 läuft nicht auf Java 8.
Verbrachte ich einige Tage versucht Lösungen zu finden, denn wir brauchen für die Ausführung von Java 8.
Erste Idee war: um das upgrade abzuschließen Frühling Paket bis 4.1.6. Ich verwendet Maven. Problem dieser Methode nach, dass es erforderlich ist, überarbeiten fast das gesamte Projekt. Es ist, weil zum Beispiel im Frühjahr 4 wurden entfernt, die JSF-Implementierung und einige spezielle taglibs, wo komplett entfernt, wie
<sf:..>
. Und das waren einige größere und kleinere Probleme mit der Konfiguration, Adapter, Handler mappings....Zweite Ansatz war die Feder ersetzen Gläser teilweise.Eins nach dem anderen. Wieder kein Erfolg. Unmöglich zu ersetzen jar-ohne Sie zu berühren Abhängigkeiten.
Ich glaube, dass nach wenigen Wochen oder Monaten zu kämpfen, die ich bekommen kann Erfolg auf beide Ansätze. Aber haben nicht so viel Zeit. Und ich gab auf.
Meine Lösung ist:
Fand ich Quelldatei JdkVersion.java aus org.springframework.core-Paket. http://www.java2s.com/Code/Jar/o/Downloadorgspringframeworkcoresources300releasejar.htm.
Ich erstellt org.springframework.core-Paket in meinem Projekt nur eine Klasse JdkVersion. Danach machte einfache änderung des Codes zu überprüfen-Java-8-version. Smth like:
...
Selbst diese code-änderung ist nicht wirklich nötig, nur just for fun.Es ist, weil diese Quelle kam von Spring 3.0.0-Paket, wo der Frühling Jungs bereits verändert die Java-version überprüfen. Versionen höher als 7 sind, die nicht als alten java.
Nun die Anwendung startet korrekt. Es rufen JdkVersion Klasse von meinem Projekt statt der jar.
Funktioniert so weit! Danke für alle aus diesem thread, wer hat diese Idee.
Dank
InformationsquelleAutor der Antwort Dmitry
=≫
ODER
InformationsquelleAutor der Antwort MAFAIZ
Brauche ich Unterstützung Frühling 2.5.5 auf Java 8, so habe ich den Ansatz von diese Antwortum eine zukunftssichere drop-in-Ersatz für
JdkVersion.class
mit so wenigen Nebenwirkungen wie möglich (niemand sonst geschrieben, eine komplette Klasse, und ich wollte Sie nicht entführen die andere Antwort). Es gibt keine Notwendigkeit zu prüfen, die für Java 8, einfach standardmäßig auf Java 7, das ist die höchste version, die die Klasse betreut über:Extrahieren Sie die jar-Datei:
Überprüfen Sie die Spring-version in
META-INF/MANIFEST.MF
(Sie sollten etwas sehen wieversion=2.5.5
). Schauen entsprechende version vonJdkVersion.java
und verwenden Sie es als Ausgangspunkt (das Beispiel unten ist für den Frühling 2.5.5 und Sie nicht wollen, um änderungen an Methodensignaturen aus der version, die Sie arbeiten).Überprüfen Sie die major und minor version des
JdkVersion.class
Datei:javap -verbose org/springframework/core/JdkVersion.class
Sehen wir, dass die Klasse war ursprünglich zusammengestellt als Ziel 48.0 (auf der Suche dieswir finden, dass ist Java 1.4):
Erstellen
org/springframework/core/JdkVersion.java
mit folgendem Inhalt:Dann kompilieren Sie die neue Klasse als Java 1.4:
javac -source 1.4 org/springframework/core/JdkVersion.java
Können Sie die großen.minor-version wieder wie oben, wenn nötig.
Erstellen der geänderten jar-Datei (ohne überschreiben der original-manifest):
jar Mcf ../spring-modified.jar *
Kopieren Sie die geänderte jar-Datei, wo nötig (wie
spring.jar
oder entsprechend).InformationsquelleAutor der Antwort vallismortis
Ich zufällig eine andere unglückliche Benutzer von einem sehr alten Projekt (entwickelt in 2008!) die ist noch mit Spring 2.5. Und es ist nicht ein Maven-Projekt, also ein Upgrade auf neuere Versionen von Spring war es, eine lange Zeit mit Abhängigkeiten Versagen und geben ein build-Fehler. Ich herabgestuft tomcat mit JRE 1.7 und es funktioniert gut.
Nur dokumentieren, wie man das in eclipse den Fall, dass jemand Hilfe braucht:
Wenn Sie nicht bereits über Java 7, download JDK 7 und installieren Sie es
irgendwo wie
C:\Program Files\Java\jdk1.7.0_71
Dann gehen Sie zu eclipse und doppelklicken Sie auf
Servers > Tomcat vX.Y server
Klicken Sie auf
Runtime Environment
dannInstalled JREs
Dann
Add
>Standard VM
und klicken Sie aufNext
. Sie sehen ein Fenster wiediese:
Klicken Sie auf
Directory...
und navigieren Sie zu dem Ordner, wo Sie installiertdas JDK (d.h.
C:\Program Files\Java\jdk1.7.0_71
. JDK ist in Ordnung, keinemüssen für JRE). Klicken Sie auf
Finish
.Dann stellen Sie sicher, dass Sie die JRE für Java 7 und Sie sind alle gesetzt.
InformationsquelleAutor der Antwort arun
Migrieren spring-version von 2,5 auf >=3.2.3.
Für Frühling-migration müssen Sie die folgenden änderungen -
1) In Ihrem pom.xml entfernen Sie die Abhängigkeit für spring 2.5.6, und fügen Sie die Abhängigkeit für das Frühjahr neue version.
2) Update 'xsi:schemaLocation' in Bohnen-tag applicationcontet.xml Datei Ihres Projekts.
e.g update http://www.springframework.org/schema/beans/spring-beans-2.5.xsd zu
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd für den Frühling 3.2.3 version.
3) Reinigen Sie,bauen und re-implementieren Sie Ihr Projekt.
InformationsquelleAutor der Antwort Amandeep Singh Bhatia
War ich vor dem gleichen Problem. Aber, nachdem er versucht sehr hart, fand ich heraus, dass dies aufgrund der Verwendung von Java 1.8. Ich habe es auf 1,6 und es funktionierte.
InformationsquelleAutor der Antwort vikash singh
Obwohl dieser Antwort wurde perfekt beantwortet, in einigen Fällen ist es nicht gewünscht oder möglich, die Aktualisierung der Java-version oder die Spring version.
In unserem Fall, haben wir die Verwendung von JDK 8 in der Lage sein, um die Kommunikation mit Sonar (von Jenkins) und wir nicht wollen, ändern Sie die Feder-version, weil wir nicht in der test-Kapazitäten um dies zu testen upgrade.
Unsere Lösung war einfach überschreiben mit der Java-version beim Aufbau unter Verwendung
InformationsquelleAutor der Antwort Dennis van Beek
Erstellte ich eine komplett automatische version des diese Antwort.
Bitte Lesen Sie diesen Beitrag zuerst für die Feinheiten er-Adressen.
spring.jar
neben derbuild.xml
Dateibuild.xml
Inhalt der Datei:InformationsquelleAutor der Antwort Erik Lievaart
ich hatte das gleiche problem, aber ich habe eine Lösung:
in Ihr Projekt-Datei pom.xml ersetzen:
für:
und sagen Sie good bye, um Ihre Probleme!!!!
Diese beiden Abhängigkeiten sind der Ersatz für die erste Abhängigkeit in den meisten Fällen.
InformationsquelleAutor der Antwort Juan David Grisales Garzon
Habe ich Unterstützung java1.8 und java1.9, Frühling 2.5.
Bitte ersetzen Sie die Datei in Ihrem tomacat lib.
JdkVersion.class - geändert
download spring.jar
InformationsquelleAutor der Antwort Konstantin Kimlaev