我有以下“Beans.xml”;它位于 Eclipse 的“src”文件夹中:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="user1" class="rc.User">
<property name="name" value="joe" />
</bean>
</beans>
我有以下java应用程序:
package rc;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Asparagus
{
public static void main (String[] arguments)
{
ApplicationContext context = null;
try
{
context = new ClassPathXmlApplicationContext("Beans.xml");
}
catch (ExceptionInInitializerError eiie)
{
System.out.println(eiie);
}
System.out.println("hi");
User u = context.getBean("user1", User.class);
System.out.println("hi2");
System.out.println(u);
}
}
它位于 eclipse 中“src”文件夹内的“rc”包中。我有一个 User bean 类,我想我最好包含它:
package rc;
public class User
{
public User() {}
public String name;
public String getName() {return name; }
public void setName(String name) {this.name = name; }
}
当我运行这个时,我得到 FileNotFoundException。我能想到它会试图找到的唯一文件是我的 XML 文件,但我不明白为什么它会遇到麻烦。
我使用 DOS 查看了目录结构,验证了“Beans.xml”是否位于应用程序类路径的根目录中(位于 src 和 bin 下)。我认为这一点可以通过以下事实得到验证:Asparagus 类(有人反对将其称为“Main”)已找到并开始运行,如果 src/bin 不是类路径根,则 Eclipse 无法执行此操作。
我最近根据其他人的建议包含了一堆困惑的库,这个问题消失了,我发现另一个问题(在 StackOverflow 中)是由 eclipse 中作为系统库包含的 jar 引起的,所以我把除了java运行时之外的所有系统库都拿出来了。
我真的不想通过添加一堆库来解决这个问题,而不知道它们应该做什么。有人可以解释一下这里发生了什么以及为什么建议的解决方案可以解决问题吗?
最佳答案
事实证明,这是项目中使用的 spring jar 的一些尚未确定的问题。
我有一整套 spring jar - 其中 8 个或 10 个 - 全部以 org.springframework.-3.1.1.RELEASE.jar 的形式命名;它们作为 jar 放置在 Spring Tool Suite(又名 eclipse)的构建路径中。另一位程序员有一个类似的简单项目正在运行,它使用 spring--3.1.2.RELEASE.jar 形式的 jar,所以我切换到了这些。现在代码可以运行了。
感谢所有提供帮助的人;我仍然不知道两组 jar 之间的区别,也不知道为什么原始错误消息如此晦涩(任何抛出 FileNotFoundException 的代码都应该能够告诉我们有关哪个文件的信息)。
关于java - 尝试简单的 Spring java 应用程序时出现 FileNotFound 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14695624/