代码语言:javascript复制
String path=FileUtil.class.getClassLoader().getResource("resources/table.xml");
其中FileUtil是我自定义的工具类。
之前的项目中通过FileUtil.class.getClassLoader().getResource()语句可以获取资源文件的路径,不知道为什么今天这个语句一直报错
代码语言:javascript复制Exception in thread "main" java.lang.NullPointerException
at cn.hadron.util.FileUtil.readConfigFile(FileUtil.java:583)
这个问题困扰了我整整半天,下午的时间都浪费了。 百度这个问题,和我的情况不一致。
晚上时突然想到了,原来我这个项目是maven web项目
resources目录下存放的资源文件经过编译后直接放到了项目根目录下了,上面语句去掉resources/
即可。
比如下面语句
System.out.println(FileUtil.class.getClassLoader().getResource("table.xml"));
输出结果是:
代码语言:javascript复制file:/home/haron/workspace/elastic/target/classes/table.xml
然而之前的Maven项目为什么通过下面语句可以获取项目中资源文件呢?,而且必须加上resources目录
代码语言:javascript复制FileUtil.class.getClassLoader().getResource("resources/table.xml");
这是因为之前的Maven项目中resources是包名,现在的Maven Web项目resources属于Source Folder。