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-context和spring-expression库之间存在不匹配。
-
我明确添加了spring-expression依赖:
org.springframework spring-expression ${spring.version} -
我从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}
- Spring JPA – 枚举中枚举字段的默认值
- Hibernate返回带有空值的列表(带有List类型的OneToMany注释)
- 如何使用Hibernate连接两个表的字段?
- 在使用Spring和Hibernate时是否需要persistence.xml?
- 从EnitityManager获取所有映射的实体
- “在注释ConcurrentHashMap时,在hibernate中非法尝试将非集合映射为@OneToMany,@ ManyToMany或@CollectionOfElements”
- 如何在JPA / Hibernate中使用带字符串类型的@Id?
- Hibernate Mapping – 使用关联表连接两个表 – 但是有一个扭曲
- 将2个数据源注入spring + hibernate应用程序总是抛出没有事务正在进行中的错误