Java.io.FileNotFoundException:由于不存在,因此无法打开类路径资源。

45

我正在尝试为我的项目设置配置位置,但一直收到以下错误:

java.io.FileNotFoundException: 无法打开类路径资源[main/resources/app-context.xml],因为它不存在

我的项目设置如下:

enter image description here

我的代码设置如下:

ApplicationContext context = new ClassPathXmlApplicationContext(configLocation: "main/resources/app-context.xml");

我该如何修复这个问题?


1
请在此处发布代码和错误日志。不要以图像形式发布。 - Kaushal28
抱歉!以后会注意的,谢谢提醒! - Rob_kael
尝试清理你的构建。链接描述 - Mateus Nogueira
7个回答

51

src/main/java 下直接放置的内容位于默认包中,即类路径的根目录。同样,放置在 src/main/resources 下的资源也会位于类路径的根目录。

所以资源的路径是 app-context.xml,而不是 main/resources/app-context.xml


当服务器在运行时,如何添加文件或更新此资源文件? - Mahdi
1
@Kenji,你不能这样做。资源是应用程序资源,在编译时已知并与应用程序捆绑在一起。如果您想稍后添加文件,则这些文件不是应用程序资源,而是数据。数据存储在数据库中,无论它是什么(可以是文件系统)。 - JB Nizet
我想为我的移动应用程序版本(是否强制更新)放置一个json文件。 因此,如果我可以将一个json文件放在公共静态根目录中并更新它,那似乎比仅为一个记录创建一个表更好。 你有什么想法? - Mahdi
如果我想在名为“report”的目录中定位与“src”同级别的文件怎么办? - powder366

8
我们也可以尝试这个解决方案。
ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath*:app-context.xml");

在这种情况下,Spring自动在类路径中找到类。

3
似乎对于使用@ImportResource("classpath*:config.xml")的Spring Boot 也可以起作用。 - redAce

2

试试这个:

ApplicationContext context = new ClassPathXmlApplicationContext("app-context.xml");

1
文件位置/路径必须相对于您的类路径位置。如果资源目录在您的类路径中,则只需要使用“app-context.xml”作为文件位置。

0
这对我有用 ApplicationContext context = new ClassPathXmlApplicationContext("app-context.xml");

0
对于Eclipse - 按照路径 构建路径 -> 配置构建路径 -> 转到源 -> 添加文件夹 标记资源文件夹,其中有您的XML文件。 现在,如果您尝试运行它,它将正常运行。

0
你可以使用以下代码来读取资源。它将提供输入流。
InputStream in = MyClass.class.getClassLoader().getResourceAsStream("files.properties");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接