【问题标题】:FileNotFoundException..Classpath resource not found in spring?春季找不到 FileNotFoundException..Classpath 资源?
【发布时间】:2010-08-08 04:45:45
【问题描述】:

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

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

直到最近它还在工作,但我不知道为什么它开始失败并出现以下异常:

线程“main”中的异常 org.springframework.beans.factory.BeanDefinitionStoreException: IOException 解析 XML 文档来自 类路径资源 [spring-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/

编辑:

【问题讨论】:

    标签: spring


    【解决方案1】:

    查看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 的类路径 :)

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 您能否详细说明为什么会发生这种情况。经过大量调试此问题后,我偶然发现了您的答案,但我仍然无法理解此问题的原因。
      • 基于上面屏幕截图中的 Java 构建路径配置,Eclipse 将已编译的类(以及类路径中的任何其他内容,包括 .xml 文件)转储到目标/类中。根据正在使用的其他构建工具(Maven、Ant、sbt 等),某些东西可能会在 Eclipse 的知识范围之外擦除该目录,并且在 Eclipse 中强制执行清理将确保重新构建目标/类。跨度>
      【解决方案3】:

      这是由于 spring-config.xml 不在类路径中。

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

      还要编写您执行的命令以运行您的项目。您可以在命令中检查类路径。

      【讨论】:

      • Yok,谢谢您的回复..正如我在问题中提到的配置文件位于构建路径中的 Resources 文件夹中(请参阅屏幕截图).. 我如何运行我的项目是我只需运行 main.jav 文件..我的项目就开始了...您能否更具体地说明您的建议..我无法理解..谢谢您的回复..
      • @javanerd 构建路径不会用于运行您的程序。您还可以为您使用的运行配置添加屏幕截图吗?我假设您正在从 Eclipse 运行您的程序。
      • 我不知道我做了什么,但它现在正在工作......感谢 YoK 调查我的问题[傻] :)
      【解决方案4】:

      有两点值得指出:

      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>
        

      之后,从 Maven 重新配置您的项目应该可以修复它。我不记得究竟如何在 Eclipse 中执行此操作,但如果您右键单击项目节点并浏览菜单,您应该会找到它。

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

          处理此类错误的最佳方法-“使用注释”。 spring.xml-&lt;context:component-scan base-package=com.SpringCollection.SpringCollection"/&gt;

          在要使用 Bean ID 的类中添加注释(我正在使用类“First”)-

          @Component
          

          公共类第一{

          主类的变化**-

          ApplicationContext 上下文 = new AnnotationConfigApplicationContext(First.class); 用这个。

          【讨论】:

            猜你喜欢
            • 2014-02-15
            • 2014-02-13
            • 1970-01-01
            • 1970-01-01
            • 2019-06-20
            • 1970-01-01
            • 1970-01-01
            • 2021-02-05
            • 2020-10-27
            相关资源
            最近更新 更多