如何在Java(Intellij)中访问资源文件?

3

当资源标识文件夹“resources”不在源码标识文件夹“java”内时,我似乎无法理解如何访问资源文件。

这是我的项目结构(遵循Maven结构,但我仍然喜欢它):

|src 
|-main
|--java (marked as sources folder)
|--|projectname
|--|-main.java
|--|-Class2.java
|--|- ..
|--|-Classx.java
|--resources (marked as resources folder)
|--|config.properties
|--|images

这是在IntelliJ中的样子

我已经尝试了所有可能的更改,但似乎无法加载config.properties文件或来自资源文件夹的任何其他文件。

getClass().getResource("config.properties");

这个方法在主类中被调用。按理说应该能正常工作,但为什么没有呢?

我该如何访问此项目结构中的资源?

祝好,杰夫

编辑1: 经过一些测试,似乎与标记源文件夹和内容根目录(这里是src的父级)之间存在目录有关。 我还不知道原因或如何解决它...

已解决: 事实证明,删除输出文件夹并重新启动IntelliJ可以解决问题。虽然我必须这样做两次... 很奇怪。

这个问题困扰了我两天,这就是问题所在 ^.^

1个回答

3

你的类在包projectname中,因此代码正在寻找资源文件projectname/config.properties,但该文件不存在。

要查找资源文件config.properties,请使用:

getClass().getResource("/config.properties");

根据getResource()的javadoc记录,资源可能不是文件系统上的文件,因此不要使用例如File之类的工具来访问它。如需读取资源内容,请改用getResourceAsStream()

仍然,只是用System.out.println(getClass().getResource("/config.properties"))测试它,输出为null。 我已经阅读了很多关于我做错了什么的内容,我很高兴你确认这是正确的方法。 不幸的是,它并没有起作用... - Jiefu7

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