2010-08-08 128 views
8

我在Main.java这样的代码:FileNotFoundException..Classpath资源在春天找不到?

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

直到最近,这是工作,但我不知道为什么它开始与下面的异常失败:

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

弹簧-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

回答

0

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

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

也写你执行运行你的项目的命令。你可以在命令中检查classpath。

+0

郁慕明,为您reply..As我在问题配置文件是在资源文件夹是在构建路径中提到的(请参阅下面的屏幕截图)..谢谢 我如何运行我的项目,我只是运行main.jav文件..并且我的项目开始...... 请问你能更具体地了解你的建议..我无法理解.. 感谢您的回复.. – javanoob 2010-08-08 09:54:19

+0

@javanerd Build Path won'用来运行你的程序。你还可以把你使用的运行配置的屏幕截图。我假设你从eclipse运行你的程序。 – YoK 2010-08-08 10:19:27

+0

我不知道我做了什么,但它现在工作... 感谢YoK查看我的问题[愚蠢] :) – javanoob 2010-08-08 12:43:53

3

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

+1

请你详细说明为什么发生这种情况。经过很多调试这个问题,我偶然发现了你的答案,但我仍然不明白这个问题的原因。 – 2012-08-20 12:18:04

+0

根据以上屏幕截图中的Java Build Path配置,Eclipse将编译类(以及类路径中的其他任何内容,包括.xml文件)转储到目标/类中。根据正在使用的其他构建工具(Maven,Ant,sbt等)的不同,可能会删除Eclipse以外的目录,并强制在Eclipse中使用Clean来确保重建目标/类。 – earldouglas 2012-08-20 17:37:17

0

有两件事情值得指出的是:

  1. 您的春天上下文依赖的范围不应该是“运行”,但“编译”,这是默认的,所以你可以删除范围线。
  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中如何做到这一点,但是如果右键单击项目节点并在菜单周围拨动,您应该可以找到它。

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 :)

0

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

-2

最好的方法来处理这种错误 - “使用注释”。在该类 spring.xml- <context:component-scan base-package=com.SpringCollection.SpringCollection"/>

添加注解您要使用Bean的ID(我使用类 “第一”) -

@Component 

公共类首先{

变动情况主类** -

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