FileNotFoundException..Classpath资源在春天找不到?
我在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/
这是由于春季-config.xml中是不是在类路径中。
将spring-config.xml的完整路径添加到您的类路径中。
也写你执行运行你的项目的命令。你可以在命令中检查classpath。
检查SpringExample/target/classes的内容。那里是spring-config.xml吗?如果没有,尝试手动删除SpringExample/target /目录,并在Eclipse中强制使用Project => Clean ...进行重建。
请你详细说明为什么发生这种情况。经过很多调试这个问题,我偶然发现了你的答案,但我仍然不明白这个问题的原因。 – 2012-08-20 12:18:04
根据以上屏幕截图中的Java Build Path配置,Eclipse将编译类(以及类路径中的其他任何内容,包括.xml文件)转储到目标/类中。根据正在使用的其他构建工具(Maven,Ant,sbt等)的不同,可能会删除Eclipse以外的目录,并强制在Eclipse中使用Clean来确保重建目标/类。 – earldouglas 2012-08-20 17:37:17
有两件事情值得指出的是:
- 您的春天上下文依赖的范围不应该是“运行”,但“编译”,这是默认的,所以你可以删除范围线。
-
您应该将编译器插件配置为编译为至少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中如何做到这一点,但是如果右键单击项目节点并在菜单周围拨动,您应该可以找到它。
看着your classpath您排除src/main/resources
和src/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
:)
我在运行我的项目时遇到同样的问题。在检查文件结构时,我意识到Spring的xml文件位于项目包内,因此无法找到。我把它放在包装外面,它工作得很好。
最好的方法来处理这种错误 - “使用注释”。在该类 spring.xml- <context:component-scan base-package=com.SpringCollection.SpringCollection"/>
添加注解您要使用Bean的ID(我使用类 “第一”) -
@Component
公共类首先{
变动情况主类** -
ApplicationContext的上下文= 新AnnotationConfigApplicationContext(First.class); 使用这个。
郁慕明,为您reply..As我在问题配置文件是在资源文件夹是在构建路径中提到的(请参阅下面的屏幕截图)..谢谢 我如何运行我的项目,我只是运行main.jav文件..并且我的项目开始...... 请问你能更具体地了解你的建议..我无法理解.. 感谢您的回复.. – javanoob 2010-08-08 09:54:19
@javanerd Build Path won'用来运行你的程序。你还可以把你使用的运行配置的屏幕截图。我假设你从eclipse运行你的程序。 – YoK 2010-08-08 10:19:27
我不知道我做了什么,但它现在工作... 感谢YoK查看我的问题[愚蠢] :) – javanoob 2010-08-08 12:43:53