2017-08-06 1 views
0

Ich versuche, eine Feder + Hibernate-Projekt mit Java 8. Aber mit Blick auf dieses ProblemSpring 4: Java 8 Kompatibilität

Ich habe ausgeführt, dass es verursacht wird, wenn wir Frühling verwenden 3. * mit Java 8. Aber wie ich bin mit Feder 4. * mit Java 8 so sollte es tritt nicht

Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [spring/config/BeanLocations.xml]; nested exception is java.lang.IllegalStateException: Context namespace element 'component-scan' and its parser class [org.springframework.context.annotation.ComponentScanBeanDefinitionParser] 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.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:212) 
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:113) 
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:80) 
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:123) 
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:422) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) 
    at com.mkyong.common.App.main(App.java:13) 
Caused by: java.lang.IllegalStateException: Context namespace element 'component-scan' and its parser class [org.springframework.context.annotation.ComponentScanBeanDefinitionParser] 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:1297) 
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1287) 
    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) 
    ... 14 more 

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.mkyong.common</groupId> 
    <artifactId>SpringExample</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>SpringExample</name> 
    <url>http://maven.apache.org</url> 

    <repositories> 
    <repository> 
     <id>JBoss repository</id> 
     <url>http://repository.jboss.com/maven2/</url> 
    </repository> 
    </repositories> 
    <properties> 
     <springframework.version>4.0.6.RELEASE</springframework.version> 
     <hibernate.version>4.3.6.Final</hibernate.version> 
     <mysql.connector.version>5.1.31</mysql.connector.version> 
     <joda-time.version>2.3</joda-time.version> 
    </properties> 
    <dependencies> 


<dependency> 
       <groupId>junit</groupId> 
       <artifactId>junit</artifactId> 
       <version>3.8.1</version> 
       <scope>test</scope> 
     </dependency> 


     <!-- Spring --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>${springframework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>${springframework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>${springframework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>${springframework.version}</version> 
     </dependency> 

     <!-- Hibernate --> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>${hibernate.version}</version> 
     </dependency> 

     <!-- MySQL --> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>${mysql.connector.version}</version> 
     </dependency> 

     <!-- Joda-Time --> 
     <dependency> 
      <groupId>joda-time</groupId> 
      <artifactId>joda-time</artifactId> 
      <version>${joda-time.version}</version> 
     </dependency> 

     <!-- To map JodaTime with database type --> 
     <dependency> 
      <groupId>org.jadira.usertype</groupId> 
      <artifactId>usertype.core</artifactId> 
      <version>3.0.0.CR1</version> 
     </dependency> 

    </dependencies> 
    <build> 
     <pluginManagement> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <version>3.2</version> 
        <configuration> 
         <source>1.6</source> 
         <target>1.6</target> 
        </configuration> 
       </plugin> 
      </plugins> 
     </pluginManagement> 
    </build> 


</project> 

Im Fall, wenn Java-8 nicht mehr kompatibel mit Feder und wir können nicht herunterladen Java 7 jetzt. Wie können wir unsere Anwendung mit Java integrieren?

bitte helfen

+0

Die Ausnahmezustände "[...] sind nur für JDK 1.5 und höher verfügbar". Was bringt dich dazu, mit java8 irgendetwas zu brechen? – f1sh

+0

diese https://stackoverflow.com/questions/32554635/why-am-i-getting-a-jdk-1-5-related-error-message-in-java-8 – sparsh610

+0

Die seltsame Sache ist, dass er schon verwende Sping '4.0.6.RELEASE', während Spring seit' 4.0.3' Java 8 unterstützt. https://spring.io/blog/2014/03/27/spring-framework-4-0-3-released-with-java-8-support-now-production-ready –

Antwort

0

Es scheint, dass Sie Probleme mit Ihrem spring.xml haben. Sie versuchen,
zu verwenden context: component-scan packages = ""
Stellen Sie sicher, dass Sie die neusten Spring-XSDs in Ihren Schemadefinitionen verwendet haben, und versuchen Sie es. Bitte lassen Sie mich wissen, wenn Sie Anmerkungen verwenden. Ich habe Spring 4.3.0 und Java 8 funktioniert einwandfrei. Ich habe mit Spring 4.1.3 und Java 8 gearbeitet und es hat wie ein Champion funktioniert. Lass es mich wissen, wenn du irgendwelche Fragen hast.

2

Spring 3.x-Versionen unterstützen nur Java 7. Wenn Sie auf das JDK8 umsteigen möchten, sollten Sie Spring 4+ verwenden.

Ich glaube, mit Ihrer Werkzeugkette stimmt etwas nicht. Sie können das Problem beheben, indem Sie die folgenden Schritte unternehmen

Stellen Sie sicher, dass:

  • Sie JDK verwenden 8 für den Quellcode zu kompilieren. Sie können es überprüfen mit $ java -version
  • Ihr Maven wird aufgefordert, den Quellcode mit der richtigen Kompilierungsstufe kompilieren. Ich sehe, dass Sie das Maven-Kompilier-Plugin verwenden, das auf konfiguriert ist, um die Zielkompilierungsstufe "1.6" zu kompilieren.
  • der Maven fügt die richtige Version der Spring-Bibliotheken hinzu. Es kann passieren, dass Sie noch einige vorübergehende Abhängigkeiten der alten Spring-Version in Ihrem Klassenpfad haben. Sie können sehen, welche Abhängigkeiten das Projekt holen wird $ mvn dependency:tree

Durch die Art und Weise, indem sie, wird das Spring Framework versuchen, die JDK-Version zu finden, während einige interne Methoden ausgeführt werden. Wenn die gelöschte JDK-Version nicht in den unterstützten JDK-Versionen aufgeführt ist, wird standardmäßig Java 1.4 verwendet. Aus diesem Grund sehen wir hier in der Nachricht der Ausnahme, dass die erwartete Version größer als JDK 1.5 sein muss. Es kann sein, dass Sie in Ihrem Klassenpfad immer noch ältere Versionen von Spring haben - entweder mit Ihrem Servlet-Container, z. B. Tomcat, oder als Transient.

Ich hoffe, es hilft.

Verwandte Themen