首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用getClass().getResource()的Java文件路径不起作用

使用getClass().getResource()的Java文件路径不起作用
EN

Stack Overflow用户
提问于 2018-06-01 03:00:10
回答 4查看 4.1K关注 0票数 2

我一直在阅读在这里和Quora上被问到的相同的问题,然而,我仍然不明白为什么我不能访问位于'src/main/resources‘文件夹中的文件。当我手动指定相对路径"src/main/resources/config/serverConf.xml“时,一切工作正常

项目结构:

代码语言:javascript
复制
src/main/java/"project related folders"
src/main/resources/config/serverConf.xml

和主类:

代码语言:javascript
复制
public class Main{

    public Main(){
        File file = new File(this.getClass().getResource("config/serverConf.xml").getPath());
        if(file.exists())
            System.out.println("Yes");
        else
            System.out.println("No");
    }

    public static void main(String[] args){
        Main main = new Main();
    }
}
EN

回答 4

Stack Overflow用户

发布于 2018-06-01 03:03:36

代码语言:javascript
复制
"config/serverConf.xml"

应该是

代码语言:javascript
复制
"/config/serverConf.xml"
票数 2
EN

Stack Overflow用户

发布于 2018-06-01 03:23:54

通常,前导/将是您使用文件路径的首选,但我可以只给它提供文件名,它可以识别出它对我来说很好。

File file = new File(this.getClass().getResource("serverConf.xml").getPath());

票数 0
EN

Stack Overflow用户

发布于 2018-06-01 03:41:47

用户Nikolas和Antoniossss已经回答了这个问题。只是为了给出一个简短的解释,以防万一。从您的目录结构来看,我猜您使用的是Maven。当您使用Maven构建项目时,Maven会将所有文件夹和文件复制到类路径的根目录target/classes文件夹中。因此,在您的情况下,应该可以使用以下方法:

代码语言:javascript
复制
File file = new File(this.getClass().getResource("/config/serverConf.xml").getPath());

但是,如果您希望使用原始代码中的相对路径,则应该在Main.java类所在的目录中创建config文件夹,并将serverConf.xml放在该文件夹中。那么下面的方法也应该可以用:

代码语言:javascript
复制
File file = new File(this.getClass().getResource("config/serverConf.xml").getPath());

也就是说,更好的方法是将配置文件放在src/main/resources文件夹下。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50631088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档