BeanFactory not initialized or already closed - call 'refresh' before access ... 的解決方法

今天在用spring寫登錄頁面的時候tomcat無法正常啓動,查看日誌,發現了錯誤:Exception in thread "main" java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext,意思是BeanFactory未初始化或已關閉。

在網上查找很久,有如下幾種解決方法:

(1)錯誤寫法:ApplicationContext ctx = new ClassPathXmlApplicationContext();

時,沒有指定配置文件,Spring實例化BeanFactory的時候是默認到classPath下面查找名爲applicationContext.xml的文件的,但是呢,你又沒有指定,所以出現了這個錯誤。

修改爲:ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

(2)spring初始化bean對象出錯;

1)xml的bean的id 有重複;

2)如果是註解配置:可能是註解的名稱有重複,只需要將重複的bean 的id和重複的註解改了就行了;

試了這兩種方式都沒有解決問題,因爲我是用註解寫的,所以我考慮到可能是有的xml文件沒有加載進來,通過對代碼的查看,發現在主xml文件中使用的import標籤出現了問題,沒有成功引入xml文件,接着把地址刪掉,寫上絕對路徑問題就解決了。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章