嵌套异常是 java.io.FileNotFoundException:类路径资源 [my-config.xml] 无法打开,因为它不存在
Posted
技术标签:
【中文标题】嵌套异常是 java.io.FileNotFoundException:类路径资源 [my-config.xml] 无法打开,因为它不存在【英文标题】:nested exception is java.io.FileNotFoundException: class path resource [my-config.xml] cannot be opened because it does not exist 【发布时间】:2022-01-24 03:52:22 【问题描述】:我对 Java 比较陌生,正在尝试学习 Spring 框架。我有以下代码
public class EmployeeTest
public static void main(String ...args)
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("my-config.xml");
Employee employee = (Employee) ctx.getBean("emp");
System.out.println(employee.getId());
System.out.println(employee.getName());
my-config.xml
位于EmployeeTest
类本身所在的位置。但是,当我运行此代码时,出现以下异常:
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [my-config.xml]; nested exception is java.io.FileNotFoundException: class path resource [my-config.xml] cannot be opened because it does not exist
按照一些文章的建议,我尝试将 my-config.xml 放在 src/main/java
下,但还是没有成功
我正在使用 IntelliJ Idea 作为编辑器。 非常感谢任何提示
【问题讨论】:
如果你试图通过类路径访问配置文件,它需要在src/main/resources
【参考方案1】:
如果你使用Maven构建你的应用程序,你应该把my-config.xml
文件放到src/main/resources
目录
【讨论】:
好的,谢谢!!!成功了【参考方案2】:好的,我找到了解决方案。所以我在src/main
下创建了一个resources
目录并将我的my-config.xml
放在那里。开始工作后
【讨论】:
【参考方案3】:您正在使用 Spring 的 ClassPathXmlApplicationContext
类。正如类名所暗示的那样(javadoc 表示)这会从应用程序类路径加载其配置文件。
但是src/main/java
树的内容不在类路径中。将文件放入src/main/resources
... 这将(通常)直接添加到类路径中,或者添加到 Maven / Gradle / 您的 IDE 生成的 JAR 或 WAR 文件中。
另见:
Maven: Introduction to the standard directory layout。我尝试按照一些文章的建议将
my-config.xml
放在src/main/java
下,但仍然没有成功。
是的……不。除非您做其他(可能是不可取的)事情,否则src/main/java
中的文件不在类路径中,ClassPathXmlApplicationContext
不会找到。
如果那些文章真的建议将其作为 this 上下文的解决方案,那么它们就是完全错误的。如果您使用的是FileSystemXmlApplicationContext
,那么这种方法可以工作......但是使用相对路径名很脆弱(这取决于应用程序的工作目录是什么),并且当您在生产中部署应用程序时,引用源代码树的路径名通常不起作用。
【讨论】:
以上是关于嵌套异常是 java.io.FileNotFoundException:类路径资源 [my-config.xml] 无法打开,因为它不存在的主要内容,如果未能解决你的问题,请参考以下文章
工厂方法“dataSource”抛出异常;嵌套异常是 javax.naming.NameNotFoundException
无法提交 Hibernate 事务;嵌套异常是 org.hibernate.Transaction 异常:JDBC 提交失败