lang.IllegalAccessError: tried to access method

運行得好好的程序,在pom.xml加入了一些其它jar包依賴後,忽然沒法啓動(啓動方式是建立一個Spring Application Context):
html

Exception in thread "main" java.lang.IllegalAccessError: tried to access method 
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingletonMutex()Ljava/lang/Object;
 from class 
org.springframework.context.event.AbstractApplicationEventMulticaster 
  at 
org.springframework.context.event.AbstractApplicationEventMulticaster.setBeanFactory(AbstractApplicationEventMulticaster.java:84)
  at 
org.springframework.context.event.SimpleApplicationEventMulticaster.<init>(SimpleApplicationEventMulticaster.java:60) 
  at 
org.springframework.context.support.AbstractApplicationContext.initApplicationEventMulticaster(AbstractApplicationContext.java:667)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:471)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
......


網上相似錯誤還有:(轉自http://www.cnblogs.com/coveted/archive/2012/03/06/2381757.html)java

Caused by: java.lang.IllegalAccessError: tried to access method org.springframework.core.GenericTypeResolver.getTypeVariableMap(Ljava/lang/Class;)Ljava/util/Map; from class org.springframework.data.util.ClassTypeInformation
    at org.springframework.data.util.ClassTypeInformation.<init>(ClassTypeInformation.java:96)
    at org.springframework.data.util.ClassTypeInformation.<clinit>(ClassTypeInformation.java:42)
    at org.springframework.data.repository.core.support.AbstractRepositoryMetadata.<init>(AbstractRepositoryMetadata.java:43)
    at org.springframework.data.repository.core.support.DefaultRepositoryMetadata.<init>(DefaultRepositoryMetadata.java:41)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepositoryMetadata(RepositoryFactorySupport.java:154)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:125)
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:114)
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:38)
    at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:142)
    ... 34 more
    
    緣由是spring-data-jpa.jar的版本和spring-data-commons-core.jar的版本不匹配所形成的,spring-data-commons-core.jar的版本太高了.
在發生異常的時候個人版本是:spring-data-jpa-1.0.2.RELEASE.jar和spring-data-commons-core-1.3.0.M1.jar
更改後:spring-data-jpa-1.0.2.RELEASE.jar和spring-data-commons-core-1.1.0.RELEASE.jar (OK)

還有:java.lang.AbstractMethodError: org.springframework.data.jpa.repository.config.SimpleJpaRepositoryConfiguration.getRepositoryBaseInterface()Ljava/lang/Class;

緣由:加入的spring-data-jedis包中引入了另一個版本的spring-core,與現有衝突。spring

解決:在pom中exclude新版本的spring-core。
code

相關文章
相關標籤/搜索