[英]Java getClass().getResource(string) not working on netbeans path
[英]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.