一、问题:
这几天做一个单机版的数据抓取项目,之前都加载了spring或者是maven
使用【this.getClass().getClassLoader().getResource("main.png")).getImage()】可以获取到资源的路径
但是现在的项目里却怎么也加载不了资源?
二、分析:
(1) 获取类加载的根路径【结果:拿不到】
File f = new File(this.getClass().getResource("/").getPath());
System.out.println(f);
(2)获取加载器路径【结果:拿不到】
URL xmlpath = this.getClass().getClassLoader().getResource("");
System.out.println(xmlpath);(3)请教同事
原来是我使用Eclipse编辑器的时候,新建资源文件夹用的是【Folder】,而不是【Source Folder】
最后在项目执行的时候,资源没有加载到【bin】目录下,还在外层
要想在原来的基础上使用,必须使用【../】回上级目录再加载资源文件
三、总结:
资源文件的路径加载算是一个小问题,但是在反射或者容器加载资源路径的时候,往往资源的路径是变化的
但是通常的加载方式,都是使用类加载器来加载资源的路径
四、扩展:
java非web工程加载log4j日志配置文件:
PropertyConfigurator.configure("./" + PropertyUtil.LOG4J_CONFIG_FILE);
注意:
log4j和我们在类里加载路径的不同点在于,log4j加载配置文件是从【工程】下面,而不是【src / bin】目录下
所以,文件夹新建时候可以只是新建【Folder】这种简单的文件夹