【问题标题】:How do I access resource files in Java (Intellij)?如何访问 Java (Intellij) 中的资源文件?
【发布时间】:2020-04-02 18:06:18
【问题描述】:

当资源标记文件夹“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 修复它。虽然我不得不做两次...... 很奇怪。

我为此纠结了两天,原来是这样^.^

【问题讨论】:

    标签: java intellij-idea resources project-structure


    【解决方案1】:

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

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

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

    getResource()的javadoc中记录

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

    【讨论】:

    • 仍然,只需使用 System.out.println(getClass().getResource("/config.properties")) 测试它就会给我 null 作为输出。我已经阅读了很多关于我做错的事情,我很高兴你确认这是应该做的方式。不幸的是它不起作用......
    猜你喜欢
    • 1970-01-01
    • 2011-01-24
    • 2011-04-01
    • 2012-05-23
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多