Spring 3.1 entityManagerFactory java.lang.NoSuchFieldError:NULL错误

Lee*_*iam 35 java orm spring jpa spring-orm

我刚刚将Spring 3.0.5迁移到3.1 GA.初始化期间我遇到运行时错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/spring/infrastructure-config.xml]: Initialization of bean failed; nested exception is java.lang.NoSuchFieldError: NULL
...
Caused by: java.lang.NoSuchFieldError: NULL
    at org.springframework.expression.TypedValue.<clinit>(TypedValue.java:32)
    at org.springframework.expression.spel.support.StandardEvaluationContext.setRootObject(StandardEvaluationContext.java:85)
    at org.springframework.expression.spel.support.StandardEvaluationContext.<init>(StandardEvaluationContext.java:74)
    at org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:124)
    at org.springframework.beans.factory.support.AbstractBeanFactory.evaluateBeanDefinitionString(AbstractBeanFactory.java:1299)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.evaluate(BeanDefinitionValueResolver.java:210)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:182)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1360)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1118)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
    ... 39 more
Run Code Online (Sandbox Code Playgroud)

这是我的xml.

<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="MyPersistenceUnit" />
  </bean>
Run Code Online (Sandbox Code Playgroud)

这是java.lang.NoSuchFieldError: NULL关于什么的?没有3.0.5的问题.

Boz*_*zho 56

这意味着版本不匹配 - 最有可能是spring类.所以确保你所有的弹簧罐都是3.1.0.特别是spring-expression.(如果在修复弹簧后它不起作用,还要升级你的JPA提供程序(休眠?))

  • 它意味着一个类是使用该字段编译的,但在运行时它找不到它 (4认同)
  • 谢谢,这对我有帮助,我在使用Spring 3.1.0后遇到了问题.看看netbeans 7.1中的maven依赖项显示spring-expression版本3.0.6就在那里!通过将其添加到pom.xml文件来强制正确的依赖性解决了这个问题. (4认同)
  • 是的,你是对的.我使用Spring Flex引用所有版本.确保所有弹簧罐均为3.1.0后,错误消失.顺便说一句,你怎么知道*java.lang.NoSuchFieldError:NULL*是版本不匹配的问题? (3认同)