簡體   English   中英

Java-使用getClass()。getResource()的文件路徑不起作用

[英]Java - File path using getClass().getResource() does not work

我一直在閱讀此處和Quora上所問的相同問題,但是,我仍然不明白為什么我無法訪問'src / main / resources'文件夾中的文件。 當我手動指定相對路徑“ src / main / resources / config / serverConf.xml”時,一切正常

項目結構:

src/main/java/"project related folders"
src/main/resources/config/serverConf.xml

和主類:

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();
    }
}
"config/serverConf.xml"

應該

"/config/serverConf.xml"

通常,前導/是您使用文件路徑的首選,但是我能夠給它提供文件名,並且它對我來說很好。

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

用戶Nikolas和Antoniossss已經回答了問題。 只是簡要說明一下以防萬一。 從您的目錄結構中,我猜您正在使用Maven。 當使用Maven生成項目時,Maven將所有文件夾和文件復制到target/classes文件夾,該文件夾是類路徑的根。 因此,在您的情況下,以下方法應該起作用:

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

但是,如果要使用原始代碼中的相對路徑,則應在Main.java類所在的目錄中創建config文件夾,並將serverConf.xml此處。 然后,以下內容也應該起作用:

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

也就是說,更好的方法是將配置文件放在src/main/resources文件夾下。

提供給getResource()方法的url必須相對於您的類路徑。 因此,如果您必須從命令行運行此程序,則需要提供指向資源文件夾的路徑才能使它起作用,即:

java Main -cp src/main/resources/

如果您使用的是IDE,通常會有用於添加類路徑的配置

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM