web-dev-qa-db-ja.com

クラスパスリソースからXMLドキュメントを解析するIOException

現在、maveniseプロジェクトを試しています。しかし、私のプロジェクトでは、いくつかのBeanを含むxmlファイルを見つけることができません。 combined2.xml

私はそれを次のように定義しています:

    public RepeatingGrpPoC() {
    appContext = new ClassPathXmlApplicationContext(
            new String[] { "src/main/Java/resources/combined2.xml",});
    c = 0;    
}

しかし、私には不明な理由で、常にエラーが発生します。

スレッド「main」での例外org.springframework.beans.factory.BeanDefinitionStoreException:クラスパスリソース[src/main/Java/resources/combined2.xml]からXMLドキュメントを解析するIOExceptionネストされた例外はJava.io.FileNotFoundExceptionです。クラスパスリソース[src/main/Java/resources/combined2.xml]は、org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader。 Java:341)org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.Java:302)at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.Java:frame.143)で.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.Java:178)(org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.Java:149))org.springframetractfactorfactor.Defbserfactory.factors.factors.factors.factors.Reader.factors.AbstractFactory.DefinitionReader.DefinitionReader.Support.Readers.DefinitionReader.DefinitionReader.support.Readers.Beanbsfactor.Reader.AbstractFactory.DefinitionReader.DefinitionReader.Supports.Beanbsfactor.Reader.AbstractFact.Reader.AbstractFactory.DefinitionReader.Support.Abs org.springframework.context.support.AbstractXmlApplicationContext.loadBeaの.loadBeanDefinitions(AbstractBeanDefinitionReader.Java:212) nDefinitions(AbstractXmlApplicationContext.Java:126)at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.Java:92)at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.Java.frame at130) .context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.Java:465)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.Java:395)at org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.Java: 139)org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.Java:93)at metadataPoC.RepeatingGrpPoC。(RepeatingGrpPoC.Java:34)at metadataPoC.Main.main(Main.Java:22)原因:Java。 io.FileNotFoundException:クラスパスリソース[src/main/Java/resources/combined2.xml]を開けませんorg.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.Java:141)org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.Java:328)に存在しないため... 14以上

相対パスを指定したので、プログラムはこのファイルをどこで探しますか?

13
Will

クラスパスからこのファイルをロードしようとしているため、見つかりません。 "combined2.xml"ではなく"src/main/Java/resources/combined2.xml"のみを指定して、src/main/Java/resourcesがクラスパスにあることを確認してください。

ちなみに、Mavenでは、リソースの標準ディレクトリはsrc/main/resourcesなので、このファイルをそこに置くことをお勧めします。

32
dogbane

Maven、リソースの標準ディレクトリはsrc/main/resourcesなので、ここにファイルを保持すると、それが使用されます。パスにファイル名を指定するだけです。

 ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("application-context.xml");

私はそれが私のために働いた同じ問題を抱えていました

2
Varun

リソースフォルダー内の.xmlを置き換えて、次のように記述する必要があります。

 String[] contextPaths = new String[] {"Xxx.xml"};
    new ClassPathXmlApplicationContext(contextPaths);

追加の構成を行わなかった場合、すべての.htmlおよび.xmlファイルはdafaultによってリソースフォルダーを検索します

1
user10934825

これを試して

appContext = new ClassPathXmlApplicationContext(
            new String[] { "/**/combined2.xml", "/**/xxx.xml"});
0
Anand Devaraj

Xmlファイルの相対パスを使用できます。相対パス:XMLファイルが配置されているパッケージへの相対パス。

例えば。想定する

package = beanfactory,  
xml file name = application-context.xml, 

このパッケージの下にあるxmlファイル。次に、パスを「/beanfactory/application-context.xml」として指定します

ApplicationContext factory=new 
ClassPathXmlApplicationContext("/beanfactory/application-context.xml");

これはエラーなしで機能します。

0
Vinod Kumar