我一直在阅读此处和Quora上提出的相同问题,但是,我仍然不明白为什么我无法访问位于&s; 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();
}
}
答案 0 :(得分:2)
"config/serverConf.xml"
应该是
"/config/serverConf.xml"
答案 1 :(得分:0)
通常领先的/
将成为你的文件路径,但我能够给它一个文件名,它认为它对我来说很好。
File file = new File(this.getClass().getResource("serverConf.xml").getPath());
答案 2 :(得分:0)
用户Nikolas和Antoniossss已经回答了这个问题。只是给它一个简短的解释,以防它有所帮助。从你的目录结构我猜你正在使用Maven。当您使用Maven构建项目时,Maven将所有文件夹和文件复制到File file = new File(this.getClass().getResource("/config/serverConf.xml").getPath());
文件夹,该文件夹是类路径的根。因此,在您的情况下,以下应该有效:
config
但是如果你想在原始代码中使用相对路径,你应该在Main.java
类所在的目录中创建serverConf.xml
文件夹并将File file = new File(this.getClass().getResource("config/serverConf.xml").getPath());
放在那里。那么以下内容也应该有效:
src/main/resources
也就是说,更好的方法是将配置文件放在{i * j + (<span>{i + j}</span>)
文件夹下。
答案 3 :(得分:0)
提供给getResource()方法的url必须是相对于类路径的。因此,如果必须从命令行运行它,则需要提供资源文件夹的路径才能使其正常工作,即:
java Main -cp src/main/resources/
如果您正在使用IDE,那么通常会添加类路径的配置