2017-06-30 7 views
0

私はcom.voja.springtestと呼ばれるデフォルトのパッケージを持っています。com.voja.springtest.beansという別のファイルはbeans.xmlです。はClassPathXmlApplicationContextでファイルを見つけることができません

私はそうFileSystemXmlApplicationContextを使用して同じようにそれを得ることができます:

ApplicationContext context = new FileSystemXmlApplicationContext("C:/Users/Voja/Desktop/_/vj/springtest/src/main/java/com/voja/springtest/beans/beans.xml"); 

しかしClassPathXmlApplicationContextはそうのようにそれを見つけることができません(と、それはチュートリアルごとに、私がやっているはずです):

ApplicationContext context = new ClassPathXmlApplicationContext("com/voja/springtest/beans/beans.xml"); 

なぜ?あなたは間違ったparhを使用

答えて

0

は、あなたの場合にはそれがあるべきよう:

ApplicationContext context = new ClassPathXmlApplicationContext("classpath*:beans.xml"); 

4.7.2.2クラスパス*:接頭

XMLベースのアプリケーションコンテキストを構築し、場所の文字列 は、特別なクラスパスを使用することができます*:接頭辞:

のApplicationContextにctx = 新しいClassPathXmlApplicationContext( "クラスパス*:confに/ appContext.xml");この の特別な接頭辞は、 の名前と一致するすべてのクラスパスリソースを取得する必要があることを指定します(内部的には、これは基本的に ClassLoader.getResources(...)呼び出しによって行われます)。

The Classpath*: portability classpath*: prefix

+0

おかげで以下のようにファイルにアクセスすることができ、これはそれを見つけるように見えるが、今、それは実際のBeanを見つけることができないことに文句を言い、およびファイルシステムで、私は全く問題がありませんでした。クラスパスがxmlファイルを見つけることができますが、その中に定義されているbeanは見つかりませんか?もう一度、FileSystemと連携しました。 –

+1

このファイルbeans.xmlを 'C:/ Users/Voja/Desktop/_/vj/springtest/src/main/resources'に移動します。リソース - それは設定のための正しい場所 – xyz

+0

今、ありがとう! –

0

FileSystemXmlApplicationContextは、キーワード「ファイル」を追加しても、キーワード「クラスパス」を追加することによって、クラスパスから取り出すことができることにより、絶対パスからXMLファイルを選びます。 あなたが

ApplicationContext context = new FileSystemXmlApplicationContext("classpath:spring-app.xml"); 
関連する問題