[英]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.