2017-08-06 61 views
0

我试图运行与Java 8中的Spring + Hibernate的项目,但面对这个问题春4:Java的兼容性8

我检查它,如果我们使用的是弹簧3 *与Java 8引起的,但由于我使用的弹簧4 *与Java 8,所以应该不会发生

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> 

在情况下,如果java的8是不具有弹簧兼容了,我们不能下载的Java 7现在。所以我们如何将我们的应用程序与java集成。

请大家帮忙

+0

异常状态“[仅]在JDK 1.5及更高版本上可用”。是什么让你认为使用java8打破了什么? – f1sh

+0

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

+0

奇怪的是他已经使用Sping'4.0.6.RELEASE',而Spring从4.0.3开始支持Java 8。 https://spring.io/blog/2014/03/27/spring-framework-4-0-3-released-with-java-8-support-now-production-ready –

回答

0

看来你的问题在你的spring.xml中。您正尝试使用
上下文:component-scan packages =“”
请确保您在架构定义中使用了最新的spring xsd,并进行尝试。如果您使用注释,请告诉我。 我使Spring 4.3.0和Java 8工作得很好。我曾与Spring 4.1.3和Java 8以及它的工作就像冠军。如果您有任何问题,请告诉我。

2

Spring 3.x版本仅支持Java 7。如果你想要转到JDK8,你应该使用Spring 4+。

我认为你的工具链有问题。您可以通过采取以下解决问题步骤

确保:

  • 你使用JDK 8编译源代码。你可以检查它 与$ java -version
  • 你的maven被告知编译的源代码编译级别为 。我看到你正在使用配置为 的maven编译插件编译目标编译级别“1.6”。
  • Maven添加了正确版本的Spring库。可能发生这样的情况, 在类路径中仍然存在旧版Spring 的一些临时依赖项。你可以看到哪些依赖该项目将 给予$ mvn dependency:tree

顺便说取,Spring框架将尝试在执行一些内部的方法找出的JDK版本。如果已解决的JDK版本未在受支持的JDK版本中列出,则它将默认为Java 1.4,因此我们在此处看到异常消息中的“预期版本必须大于JDK 1.5”。这可能是因为你的classpath中仍然存在一些Spring的旧版本 - 或者与你的servlet容器(例如Tomcat)一起出现,或者是暂时的。

希望它有帮助。