Spring 4.1.0.RELEASE和Hibernate 4.3.6.Final的依赖性问题

我想用Spring和Hibernate(和Maven)构建一个RESTful服务。 我首先使用Spring版本4.0.3,一切正常。 但我想使用最新版本4.1.0并相应地更改了我的pom.xml。 但是在开始时我得到一个错误。 你能说出pom.xml应该是什么样的吗? 使用spring创建RESTful服务的最佳方法是什么? 我找到了一个使用spring-data-rest-webmvc的例子,我正在使用它。 有没有更好的办法?

这是错误代码:

AM org.apache.catalina.core.StandardContext loadOnStartup Schwerwiegend: Servlet /spring threw load() exception java.lang.NoSuchMethodError: org.springframework.expression.spel.SpelParserConfiguration. (Lorg/springframework/expression/spel/SpelCompilerMode;Ljava/lang/ClassLoader;)V at org.springframework.context.expression.StandardBeanExpressionResolver.(StandardBeanExpressionResolver.java:98) at org.springframework.context.support.AbstractApplicationContext.prepareBeanFactory(AbstractApplicationContext.java:553) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:455) at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:658) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:624) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:672) at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:543) at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:484) at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) at javax.servlet.GenericServlet.init(GenericServlet.java:160) at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5176) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5460) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) 

这是我的pom.xml

   4.0.0 de.rwth-aachen.prime spring war 0.0.1-SNAPSHOT spring Maven Webapp http://maven.apache.org   junit junit 4.11 test   org.springframework spring-context ${spring.version}   org.springframework spring-orm ${spring.version} jar compile   org.springframework spring-expression ${spring.version}   org.springframework.data spring-data-rest-webmvc 2.2.0.RELEASE   org.hibernate hibernate-core 4.3.6.Final   org.apache.commons commons-dbcp2 2.0    org.slf4j slf4j-simple 1.7.5   mysql mysql-connector-java 5.1.32   org.apache.logging.log4j log4j-api 2.0.2   org.apache.logging.log4j log4j-core 2.0.2   org.docx4j docx4j 3.0.0    spring   1.7 4.1.0.RELEASE   

和rest-servlet.xml

                         

在我目前的项目中,我有:

 4.1.2.RELEASE 1.6.1.RELEASE 

这就是我修复它的方法:

我运行了mvn依赖:tree

 [INFO] ------------------------------------------------------------------------ [INFO] Building MongoDb Facts 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ mongodb-facts --- [INFO] com.vladmihalcea:mongodb-facts:jar:1.0-SNAPSHOT [INFO] +- org.springframework:spring-jms:jar:4.1.2.RELEASE:compile [INFO] | +- org.springframework:spring-aop:jar:4.1.2.RELEASE:compile [INFO] | | \- aopalliance:aopalliance:jar:1.0:compile [INFO] | +- org.springframework:spring-context:jar:4.1.2.RELEASE:compile [INFO] | \- org.springframework:spring-messaging:jar:4.1.2.RELEASE:compile ... [INFO] +- org.springframework.data:spring-data-mongodb:jar:1.6.1.RELEASE:compile [INFO] | +- org.springframework:spring-expression:jar:4.0.7.RELEASE:compile [INFO] | +- org.springframework.data:spring-data-commons:jar:1.9.1.RELEASE:compile [INFO] | \- org.mongodb:mongo-java-driver:jar:2.12.3:compile 

正如您所看到的, spring-contextspring-expression库之间存在不匹配。

  1. 我明确添加了spring-expression依赖:

      org.springframework spring-expression ${spring.version}  
  2. 我从spring-data-mongodb中排除了spring-expression:

      org.springframework.data spring-data-mongodb ${spring-data-mongodb.version}   org.springframework spring-expression    

现在当我运行mvn依赖:tree

 --- maven-dependency-plugin:2.8:tree (default-cli) @ mongodb-facts --- com.vladmihalcea:mongodb-facts:jar:1.0-SNAPSHOT +- org.springframework:spring-jms:jar:4.1.2.RELEASE:compile | +- org.springframework:spring-aop:jar:4.1.2.RELEASE:compile | | \- aopalliance:aopalliance:jar:1.0:compile | +- org.springframework:spring-context:jar:4.1.2.RELEASE:compile | \- org.springframework:spring-messaging:jar:4.1.2.RELEASE:compile +- org.springframework:spring-expression:jar:4.1.2.RELEASE:compile +- org.springframework.data:spring-data-mongodb:jar:1.6.1.RELEASE:compile | +- org.springframework.data:spring-data-commons:jar:1.9.1.RELEASE:compile | \- org.mongodb:mongo-java-driver:jar:2.12.3:compile 

我遇到了类似的问题,我可以通过显式管理spring-context依赖来解决它。 其中一个模块使用了错误的版本。 我看到你已经有了一个依赖关系管理,但仔细检查是否被另一个较低级别的项目覆盖是不会有害。

尝试mvn dependency:tree > tree.txt并检查生成的文件,看看是否在项目的其他地方使用了另一个版本的spring-context

如果您计划使用springframework项目版本=> 4.1.0,请尝试在pom.xml文件中添加此依赖项

  org.springframework spring-expression 4.2.0.RELEASE  

我想在vlad-mihalcea所写的内容上添加以下内容。
1)如果在Eclipse中打开选项卡依赖关系层次结构, 您将获得一些诊断为什么选择一个依赖关系。 “依赖关系层次结构”选项卡http://sofzh.miximages.com/java/21kdloy.png
这是我的问题。 由于内部工件,弹簧表达式3.2.8.RELEASE被选择超过4.1.6.RELEASE并且我的Spring Boot服务器不再启动了! 你读’忽略冲突’
2)使用标签“排除”不是唯一的可能性。 您可以将依赖项向下移动到POM(在我的情况下是实用程序),在这种情况下,它是所选表达式的正确版本。 3.2.8.RELEASE被丢弃,转而支持4.1.6.RELEASE。

您可能缺少POM文件中的spring-expression..jar配置。 在pom文件中添加依赖项。

  org.springframework spring-expression ${spring.version}