2013-11-21 37 views
2

我有一個奇怪的問題,我一直無法解決。我正在嘗試使用示例JPA sprint boot(v0.5.0-M6)項目作爲我正在編寫的應用程序的起點。我抓住了JPA示例並讓它在本地運行。然後我開始將我的代碼添加到該項目中。我導入到eclipse中,並作爲spring-boot運行。然後,我得到這個錯誤:春季開機無法運行 - IllegalAccessError啓動時

Exception in thread "main" java.lang.IllegalAccessError: tried to access class org.springframework.core.io.DefaultResourceLoader$ClassPathContextResource from class org.springframework.boot.context.embedded.EmbeddedWebApplicationContext 
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.getResourceByPath(EmbeddedWebApplicationContext.java:386) 
at org.springframework.core.io.DefaultResourceLoader.getResource(DefaultResourceLoader.java:100) 
at org.springframework.context.support.GenericApplicationContext.getResource(GenericApplicationContext.java:211) 
at org.springframework.boot.context.initializer.ConfigFileApplicationContextInitializer.load(ConfigFileApplicationContextInitializer.java:192) 
at org.springframework.boot.context.initializer.ConfigFileApplicationContextInitializer.load(ConfigFileApplicationContextInitializer.java:134) 
at org.springframework.boot.context.initializer.ConfigFileApplicationContextInitializer.initialize(ConfigFileApplicationContextInitializer.java:121) 
at org.springframework.boot.SpringApplication.applyInitializers(SpringApplication.java:403) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:287) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:749) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:738) 

從我可以告訴,這是錯誤的應用程序上下文,因爲我沒有使用XML配置,但註釋來驅動配置。春季開機自動選擇這一個,我需要告訴它不要使用上述。至少我認爲我需要這樣做。

我在這裏和在spring.io論壇搜索,但沒有人似乎有同樣的問題。

問題:是什麼驅使用自動配置選擇應用程序上下文?

我該如何解決上述問題?我還需要在這裏提供什麼幫助調試自動配置問題?

TIA,

斯科特

+0

'java.lang.IllegalAccessError'通常是環境問題的標誌。也許是類路徑上的錯誤jar文件,或錯誤的JDK?很難說沒有更多的細節。樣本是否在沒有更改的情況下運行?有什麼變化?你能分享代碼嗎? –

回答

3

我得到了同樣的問題。 如果你使用maven檢查你的pom.xml

刪除Spring Lib中的衝突版本。

<properties> 
     <hibernate.version>4.2.0.Final</hibernate.version> 
     <mysql.connector.version>5.1.21</mysql.connector.version> 
     <spring.version>3.2.2.RELEASE</spring.version> 
</properties> 

我刪除此行

<spring.version>3.2.2.RELEASE</spring.version> 

和Maven的依賴只是

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-jdbc</artifactId> 
</dependency> 

希望這有助於。

+1

您的回答引導我解決了我的問題。這是因爲在我的多模塊父POM中,我放入了對spring-core特定版本(3.2.5)的依賴。我不會認爲這是問題的原因,但似乎是這樣。謝謝您的幫助! –

+0

這也幫助我非常好!在我的情況下,我也有一個多模塊父POM。在我的父POM中,我必須確保將設置爲SAME VERSION,如同在spring-boot-dependencies POM中一樣。 –

0

我正面臨同樣的問題,並解決了修復啓動啓動器父pom的引用問題。

在我使用的pom.xml文件:

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>0.5.0.M6</version> 
</parent> 

我有一些亟待解決的問題立即解決,所以我沒有檢查這個父POM,看看什麼是非常重要的在這裏,但我希望這能幫助你 - 不要忘記驗證你使用的版本!