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

标签 java intellij-idea resources project-structure

当资源标记文件夹“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

this is how it looks in IntelliJ

我已将所有可能的更改应用于以下行,但似乎仍无法从资源文件夹加载 config.properties 文件或任何其他文件。
getClass().getResource("config.properties");

这是在主类中被调用的。
这应该可以正常工作吗?为什么不呢?

如何访问具有此项目结构的资源?

大爱,洁夫

编辑1:
经过同样的测试,它似乎与标记的源文件夹和内容根目录(这里是 src 的父目录)之间的目录有关
我还不知道这是为什么或如何解决它...

解决了:
事实证明,删除输出文件夹并重新启动 IntelliJ 可以修复它。虽然我不得不做两次......
奇怪的。

我为此纠结了两天,这就是 ^.^

最佳答案

您的类(class)在包裹 projectname 中,所以代码正在寻找资源文件 projectname/config.properties ,但文件不存在。

寻找资源文件config.properties , 用:

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

记录在案 getResource() 的 javadoc 中.

请记住,资源可能不是文件系统上的文件,所以不要使用例如File访问它。要读取资源的内容,请使用 getResourceAsStream() 反而。

关于java - 如何在 Java (Intellij) 中访问资源文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60998158/

相关文章:

java - 运行 spring mvc 基本示例应用程序的步骤

android - 如何从字符串数组中提取名称属性?

java - UrlClassLoader加载图片资源

java - 为什么创建此对象的实例会更改另一个对象的实例变量?

android - 在 IntelliJ IDEA 中获取照片到 Android 虚拟设备上

java - JPA/Hibernate - 将枚举保留为常量表

java - Lombok 注解在 Intellij IDEA 下无法编译

iOS 和 OS X : When does Base localization take precedence?

java - 在 Statement 和 ResultSet 上设置提取大小之间的区别

java - 如何在不迭代 List<Map> 的情况下获取值