FileNotFoundException..Classpath资源在spring中找不到?

时间:2010-08-08 04:45:46

标签: spring

我在 Main.java 中有这样的代码:

AbstractApplicationContext context  = new ClassPathXmlApplicationContext("spring-config.xml");

直到最近它才起作用,但我不知道为什么它开始失败以下例外:

  

线程“main”中的异常   org.springframework.beans.factory.BeanDefinitionStoreException:   IOException解析XML文档   类路径资源   [弹簧-config.xml中];嵌套异常   是java.io.FileNotFoundException:   类路径资源   [spring-config.xml]无法打开   因为它不存在

spring-config.xml 位于 src / main / resources 文件夹中。

实际上我想了解注释:@Postconstruct和@Predestroy,所以我将构建路径从Jdk 1.5更改为Jdk 1.6。

此后问题就开始了......

为什么它不起作用的任何线索?

注意:如果有人想看我的项目结构,请点击此链接 http://code.google.com/p/javapracticeram/source/browse/trunk/SpringExample/

编辑:alt text http://i38.tinypic.com/348nbde.png

6 个答案:

答案 0 :(得分:11)

查看your classpath,您排除了src/main/resourcessrc/test/resources

    <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
    <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>

有原因吗?尽量不要将类路径排除到spring-config.xml:)

答案 1 :(得分:3)

检查SpringExample / target / classes的内容。是spring-config.xml吗?如果没有,请尝试手动删除SpringExample / target /目录,并在Eclipse中使用Project =&gt; Clean ...强制重建。

答案 2 :(得分:0)

这是因为spring-config.xml不在classpath中。

将spring-config.xml的完整路径添加到类路径中。

同时编写执行命令以运行项目。您可以在命令中检查classpath。

答案 3 :(得分:0)

有两件事值得指出:

  1. spring-context依赖项的范围不应该是“runtime”,而是“compile”,这是默认值,所以你可以删除范围行。
  2. 您应该将编译器插件配置为至少编译为java 1.5,以便在使用Maven构建时处理注释。 (也可能影响IDE设置,尽管Eclipse不倾向于关注。)

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    
  3. 之后,从Maven重新配置项目应该修复它。我不记得在Eclipse中究竟是如何做到的,但是如果你右键单击项目节点并在菜单周围戳一下,你应该找到它。

答案 4 :(得分:0)

我在运行项目时遇到了同样的问题。在检查文件结构时,我意识到Spring的xml文件位于项目的包中,因此无法找到。我把它放在包装外面,效果很好。

答案 5 :(得分:-2)

处理此类错误的最佳方式 - &#34; 使用注释&#34;。 spring.xml - <context:component-scan base-package=com.SpringCollection.SpringCollection"/>

在该类中添加要使用Bean ID的注释(我正在使用类&#34; First&#34;) -

@Component

public class First {

主要类别的变化** -

  

ApplicationContext context =               new AnnotationConfigApplicationContext(First.class);   用这个。