2013-04-15 60 views
0

我想創建一個使用Spring作爲Ioc的Solr數據導入處理程序。當我嘗試從Solr調用處理程序時,出現以下錯誤Spring無法加載基於java的配置

Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to load bean class: com.yoox.shanghai.AppConfig; nested exception is java.io.FileNotFoundException: class path resource **[com/my/app/AppConfig.class]** cannot be opened because it does not exist 

請注意郵件中打印的路徑。它看起來像使用相對路徑。我不知道是什麼原因。我正在使用Java based container configuration,編譯通過。我的代碼與JUnit4一起工作。

appCtx = new AnnotationConfigApplicationContext(AppConfig.class); 
+0

你是如何加載Spring上下文的?請添加相關的代碼/配置。 – 2013-04-15 08:15:34

+0

'resources.AppConfig.class'是否可以編譯?這與'com/my/app/AppConfig.class'不匹配。 – 2013-04-15 08:22:16

+0

@LutzHorn,thx :)我粘貼了錯誤的代碼。 – davidshen84

回答

0

我google了很長一段時間,但找不到任何關於默認情況下如何解決類路徑的答案。但是我發現人們試圖明確設置類加載器,所以我嘗試了。

appCtx = new AnnotationConfigApplicationContext(); 
appCtx.setClassLoader(this.getClass().getClassLoader()); 
appCtx.register(AppConfig.class); 
appCtx.refresh(); 

而且它的工作原理:d

但是我不滿意這個答案。我希望有人能指出我的類加載邏輯有什麼問題。

+0

春天3.4我找不到setClassLoader!你是如何得到那個setter? – mghz

+0

如果[文檔](http:// docs .spring.io/spring/docs/3.0.x/api/org/springframework/context/annotation/AnnotationConfigApplicationContext.html)是正確的,它應該在那裏,但我認爲* Spring *太大了,我轉向Google的** **吉斯。 – davidshen84

0

是否確定要正確導入AppConfig?否則,請確保該類已真正部署(檢查部署目錄)。

+0

是的,我確認了,班上就在那裏。這個問題的關鍵是春天如何找到類。我試圖檢查我的類路徑值,但我不知道要看的地方:( – davidshen84

+0

Spring配置文件通常是存儲在src/main/resources文件夾中的類路徑資源。在構建過程中,它們被複制到'WEB-INF/classes'目錄下,你使用的是Maven嗎? – benjiman

+0

不,我沒有使用Maven。 – davidshen84

相關問題