Classpath问题

java中的classpath路径问题

最近项目中有个调别的同事接口的地址频繁变更,就修改到配置文件中,方便部署以后修改.
config文件放在项目的resource文件夹下,resource文件夹下的文件在打包的时候会自动copy到项目的classPath目录下.
resource文件夹下添加config文件
写完以后在在单元测试中测试:

1
2
3
4
5
6
7
@Test
public void testGetProperty(){
String value=FileUtil.getPropertyByName("rest.url","","config" +
".properties");
System.out.println(value);
}

提示找不到配置文件.
查了一下想起来,maven管理的项目,单元测试的时候文件也需要放到test文件夹下的resource里
于是把resource文件夹copy到了test下.
test下添加resource文件夹
测试,还是提示找不到配置文件,不得其姐,于是google一下,看到了如下病理解释:
classPath路径问题
stackoverflow原问题地址

按照回答的阐述,getResourceAsStream(“config.xml”)会在文件所处包内查找配置文件,如果要找到classpath下的文件的话,应该加上”/“才能定位到classpath根目录,于是修改了一下单元测试方法,加上了”/“,

1
2
3
4
5
6
7
8

@Test
public void testGetProperty(){
String value=FileUtil.getPropertyByName("rest.url","","/config" +
".properties");
System.out.println(value);
}

测试通过.

出于怀疑精神,决定去查一下是否真像回答中的一样没有”/“的时候会在包下找文件路径,于是把配置文件copy到了编译后的class所在包的文件夹下,并把”/“去掉:
target/test-class文件夹下添加配置文件
运行测试
测试成功
通过,歪果仁诚不欺我