我一直在阅读在这里和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();
}
}
发布于 2018-06-01 03:03:36
"config/serverConf.xml"
应该是
"/config/serverConf.xml"
发布于 2018-06-01 03:23:54
通常,前导/
将是您使用文件路径的首选,但我可以只给它提供文件名,它可以识别出它对我来说很好。
File file = new File(this.getClass().getResource("serverConf.xml").getPath());
发布于 2018-06-01 03:41:47
用户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
文件夹下。
https://stackoverflow.com/questions/50631088
复制相似问题