2011-12-14 56 views
35

Tôi vừa di chuyển Spring 3.0.5 đến 3.1 GA. Tôi gặp phải lỗi thời gian chạy trong khi khởi tạo:Mùa xuân 3.1 thực thểManagerFactory java.lang.NoSuchFieldError: NULL Lỗi

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 

Đây là xml của tôi.

<bean id="entityManagerFactory" 
    class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"> 
    <property name="persistenceUnitName" value="MyPersistenceUnit" /> 
    </bean> 

Đây là gì java.lang.NoSuchFieldError: NULL? Không có vấn đề với 3.0.5.

Trả lời

55

Điều này có nghĩa là phiên bản không phù hợp - rất có thể với các lớp học mùa xuân. Vì vậy, hãy chắc chắn rằng tất cả các lọ mùa xuân của bạn là 3.1.0. Đặc biệt là spring-expression. (Cũng nâng cấp nhà cung cấp JPA của bạn (hibernate?) Nếu nó không hoạt động sau khi sửa mùa xuân)

+2

Vâng, bạn là đúng. Tôi sử dụng Spring Flex đề cập đến tất cả các phiên bản. Sau khi tôi đảm bảo tất cả các bình xuân là 3.1.0, lỗi đã biến mất. BTW, làm thế nào để bạn biết * java.lang.NoSuchFieldError: NULL * là vấn đề không phù hợp với phiên bản? –

+4

nó có nghĩa là một lớp đã được biên dịch với các lĩnh vực tại chỗ, nhưng lúc chạy nó không tìm thấy nó – Bozho

+3

Cảm ơn, điều đó đã giúp tôi quá, tôi đã có vấn đề sau khi sử dụng Spring 3.1.0. Một cái nhìn trong phụ thuộc maven trong netbeans 7.1 cho thấy phiên bản mùa xuân biểu hiện 3.0.6 đã có! Buộc phụ thuộc đúng bằng cách thêm nó vào tệp pom.xml đã giải quyết được sự cố. –

1

Nó có thể giúp bạn. Upgrading from Spring 3.0.3.RELEASE results in: java.lang.NoSuchFieldError: USER_DECLARED_METHODS

Trước đó tôi đã như thế này

<dependencies> 
<!-- Spring 3 dependencies --> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-core</artifactId> 
    <version>3.1.2.RELEASE</version> 
</dependency> 
... 
</dependencies> 

Sau đó, tôi thêm

<dependencies> 
<!-- Spring 3 dependencies --> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-core</artifactId> 
    <version>3.1.2.RELEASE</version> 
    <exclusions> 
     <exclusion> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 
... 

</dependencies> 
Các vấn đề liên quan