java的properties文件需要放到classpath下面,这样程序才能读取到,有关classpath实际上就是java类或者库的存放 路径,在java工程中,properties放到class文件一块。在web应用中,最简单的方法是放到web应用的WEB-INF/classes 目录下即可,也可以放在其他文件夹下面,这时候需要在设置classpath环境变量的时候,将这个文件夹路径加到classpath变量中,这样也也可 以读取到。在此,你需要对classpath有个深刻理解,classpath绝非系统中刻意设定的那个系统环境变量,WEB-INF/classes其 实也是,java工程的class文件目录也是。
以下内容的背景:IntelliJ,Java项目。
在单元测试中,我们经常会使用与生产环境里不同的一些配置文件来为提供参数,而你的程序又是以类似下面的方法来读取配置文件:
123 | String configFileName = "config.properties" ; Properties properties = new Properties(); properties.load(MyClass. class .getClassLoader().getResourceAsStream(configFileName)); |
上面的代码中仅使用了配置文件名,而不是其完整路径,这就导致了可能在IntelliJ中运行一个单独的单元测试的时候,找不到该配置文件,因为你只提供文件名的话,该文件必须要在classpath中,否则是找不到它的。
所以,我们可以把该配置文件所在的目录添加到IntelliJ项目里的classpath中,让它可以在运行单元测试的时候找得到。方法如下(一图胜千言,直接看下面的演示图就明白了):
文章来源:http://www.codelast.com/
点击菜单File→Project Structure,进入“Project Structure”对话框,点击左侧的“Modules”,然后点击中部的“Dependencies”tab,然后再点击右部的“+”号添加你指定的目录,这里要注意了,在弹出的“Attach Files”对话框中,你必须要选择“classes”(如图所示)。最后,把目录添加进来之后,再把它们对应的“Scope”设置为“Test”,表示在测试中会依赖这个目录,即可。
图片可保存下来放大查看。
以上方法在IntelliJ 12.0.4中亲测通过,对于其他版本的IntelliJ也应该类似。
【补充】
12.1.4版的IntelliJ与上面的图略有不同。在点击了“+”号之后,会弹出一个菜单:
选择“Jars or directories...”,然后会弹出对话框让你选择目录或文件,选择好之后,和上面一样,要选择“classes”,后面的操作也一样了。
来自:http://www.codelast.com/%E5%8E%9F%E5%88%9B%E5%A6%82%E4%BD%95%E6%B7%BB%E5%8A%A0%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E7%9B%AE%E5%BD%95%E5%88%B0intellij%E9%A1%B9%E7%9B%AE%E7%9A%84classpath%E4%B8%AD/