0

私は春に新しく来ました。私は奇妙な例外FileNotFoundExceptionで簡単なプロジェクトとスタックを書こうとしました。

私の考えでは、読み込みに問題がありapp-context.xmlます。しかし、正しい絶対パスを設定していると確信しています。

助言がありますか?

メインコード:

パッケージcom.prospring.ch2;

public class HelloWorldSpringDI {

    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext(
                "/home/nazar_art/workspace/ch2/src/main/resources/META-INF/spring/app-context.xml");
        MessageRenderer mr = ctx.getBean("renderer", MessageRenderer.class);
        mr.render();
    }
}

ここの内容 app-context.xml:

    <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <bean id="provider" class="com.prospring.ch2.HelloWorldMessageProvider" />
    <bean id="rendere" class="com.prospring.ch2.StandartOutMessageRenderer" 
        p:messageProvider-ref="provider" />

    <!--<description>Example configuration to get you started.</description --> 
    <!-- context:component-scan base-package="com.prospring.ch2" />  -->
</beans>

コンソール メッセージのスニペット:

14:24:06,360  INFO t.support.ClassPathXmlApplicationContext: 456 - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@3f62e847: startup date [Wed Nov 13 14:24:06 EET 2013]; root of context hierarchy
14:24:06,509  INFO eans.factory.xml.XmlBeanDefinitionReader: 315 - Loading XML bean definitions from class path resource [home/nazar_art/workspace/ch2/src/main/resources/META-INF/spring/app-context.xml]
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [home/nazar_art/workspace/ch2/src/main/resources/META-INF/spring/app-context.xml]; nested exception is java.io.FileNotFoundException: class path resource [home/nazar_art/workspace/ch2/src/main/resources/META-INF/spring/app-context.xml] cannot be opened because it does not exist

app-context.xml 端末からのパスを確認しましたが、すべて問題ないようです:

nazar_art@nazar-desktop:~/workspace/ch2/src/main/resources/META-INF/spring$ pwd
/home/nazar_art/workspace/ch2/src/main/resources/META-INF/spring
nazar_art@nazar-desktop:~/workspace/ch2/src/main/resources/META-INF/spring$ ls -lg
total 4
-rw-rw-r-- 1 nazar_art 867 Nov 13 14:25 app-context.xml

これが私のストライキを見ています:

春のプロジェクト

  • この問題を解決するにはどうすればよいですか?
4

2 に答える 2

4

クラスパス アプリケーション コンテキスト ローダーClassPathXmlApplicationContextを使用し、それに絶対パスを渡しています。

FileSystemXmlApplicationContextを使用する必要があります

ClassPathXmlApplicationContextを使用する場合は、アプリケーションのクラス パスにあることを確認しapp-context.xml、適切なリソース名を渡す必要があります。これは、ファイル システムの絶対パスとは異なります。

于 2013-11-13T13:01:44.570 に答える
0

どちらかを使用

public static void main(String[] args) {
    ApplicationContext ctx = new FileSystemXmlApplicationContext(
            "/home/nazar_art/workspace/ch2/src/main/resources/META-INF/spring/app-context.xml");
    ...
}

また

public static void main(String[] args) {
    ApplicationContext ctx = new ClassPathXmlApplicationContext(
            "META-INF/spring/app-context.xml");
  ...
}

FileSystemXmlApplicationContext

ClassPathXmlApplicationContext

于 2013-11-13T13:08:17.470 に答える