2016-11-18 12 views
0

SpringがクラスパスからapplicationContext.xmlファイルを読み込むのに問題があります。次のエラーの原因クラスパス上のリソースを指定する方法

appContext = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); 

appContext = new ClassPathXmlApplicationContext("applicationContext.xml"); 

Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [applicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource 
[applicationContext.xml] cannot be opened because it does not exist 
at 
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341) 
at 
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) 

次のコードは、applicationContextファイルを含むクラスパス上にあるすべてのjarファイルを正しくリストしています。これらのjarファイルの

ClassLoader cl = ClassLoader.getSystemClassLoader(); 
URL[] urls = ((URLClassLoader)cl).getURLs(); 
for(URL url: urls){System.out.println(url.getFile());} 

一つは、私の「applicationContext.xmlを」ファイルが含まれていリソースフォルダがあります。私はそれがそこにあることを確認するために7-Zipでjarファイルを開いた。

私のjarファイルをリストしたクラスローダーがそれを見つけることができるかどうかを調べるためのコードをいくつか追加しました。

URL appContextURL=cl.getResource("applicationContext.xml"); 
if(appContextLocation==null){ 
    logger.info("context not found in classpath"); 
}else{ 
    logger.info("Application context found at " + appContextLocation); 
} 

これも見つからない

applicationContext.xmlが見つかったかどうかを確認するにはどうすればよいですか?

+0

ここでapplicationContext.xmlを入れましたか? – kuhajeyan

+0

どのIDEを使用していますか? –

+1

これに 'resources'フォルダがある場合、あなたのパスは'/resources/applicationContext.xml'でなければなりません。これはクラスパスのルートからロードされます。 –

答えて

0

答えはM. Deinumが提案したようにフォルダを含む相対パスを修正することです。

appContext = new ClassPathXmlApplicationContext("classpath:resources/applicationContext.xml"); 

およびデバッグに

URL appContextURL=cl.getResource("applicationContext.xml"); 

私はこのような構造は、EclipseとMavenでデフォルトを使用した結果であることを集めるように、この必要性は、私がオンラインで見つかった例のいずれにも表示されませんでした瓶を作りながら。

素晴らしい質問と提案をいただき、ありがとうございます。

関連する問題