2012-01-05 59 views
0

我正在使用一個數據庫存儲系統的Web應用程序,我選擇保持獨立dataAccess-applicationcontext從休息。但是,當我運行下面的代碼行時,它說它不存在。春3.0沒有找到相關的applicationContext.xml

ApplicationContext ac = new ClassPathXmlApplicationContext("dataAccess-applicationContext.xml", UsageDataDAO.class); 

我甚至將xml文件移動到相同的目錄,以獲得相同的錯誤,如下所示。

嵌套的例外是java.io.FileNotFoundException:類路徑的資源[COM/foobar的/酒吧/富/數據訪問-的applicationContext.xml]不能打開,因爲它不存在

任何想法在這裏?

+0

什麼目錄中的文件是什麼?包含您的代碼行的類是什麼包? – jtoberon 2012-01-05 18:17:59

+0

我已經用同一個目錄中的文件,上面的目錄,WEB-INF和應用程序的根目錄來試用它。沒有一個可行。 – 2012-01-05 18:23:01

回答

0

請編輯與下劃線代替dataAccess_applicationContext.xml數據訪問,你的applicationContext.xml文件名。然後再試一次。

+0

雖然沒有工作謝謝嘗試。 – 2012-01-05 17:58:48

0

嘗試使用類路徑*:前綴。 「classpath *:dataAccess-application-context.xml」如果它在根類路徑中,則使用「classpath *:/ folderName/dataAccess-application-context.xml」

+0

對不起,但這也沒有幫助錯誤。感謝您的幫助。 – 2012-01-05 18:04:59

1

如果沒有所有的細節,但它必須是兩個問題之一。

首先,該文件確實是不是在你的類路徑中。這是一個Web應用程序,所以當你檢查類路徑時你應該考慮how your particular servlet container works。例如,在servlet環境中,WEB-INF不在類路徑中,而是WEB-INF /類。

其次,該文件是在類路徑中,但你錯誤地引用它。根據您提供的信息,我認爲情況並非如此,但這種可能性可能會在以後擴大。

無論如何,爲什麼你想手動加載一個文件?你應該引用你的web.xml中的配置。如果您提供有關如何運行Web應用程序的更多詳細信息,那麼我們可以幫助您完成此部分。同時,這個例子可能是足夠的信息。它說明了如何配置可以被所有在容器中的servlet和過濾器共享的根彈簧容器(配置特定的Servlet時,需要一個稍微不同的方法):

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/config1.xml, /WEB-INF/config2.xml</param-value> 
</context-param> 
0

你的第二個參數:

ApplicationContext ac = 
    new ClassPathXmlApplicationContext("dataAccess-applicationContext.xml", 
     UsageDataDAO.class); 

包括用法數據DAO類別。根據該課程的彈簧javadoc,這要求在com/foobar/bar/foo/中的上下文搜索開始。

而是把數據訪問-的applicationContext.xmlWEB-INF/classes中和嘗試:

ApplicationContext ac = 
    new ClassPathXmlApplicationContext("dataAccess-applicationContext.xml"); 
UsageDataDAO myDao = (UsageDataDAO) ac.getBean("MyDaoBeanName"); 
相關問題