Java做好的Web项目做好后要打成War包,而一些与环境相关的配置参数也打在包中,修改不方便。
这时可以把配置文件的存放目录写到环境变量的classpath中,这样就可以直接通过函数调用配置文件了。
我用的是.properties配置文件。
//读取函数如下
public String getProperties(String key)
{
try {
String value = "";
String fileName = "config.properties";//配置文件名称
InputStream is = this.getClass().getClassLoader().getResourceAsStream(fileName);//可得到classpath下的配置文件的输入流
Properties propFile = new Properties();//新建属性文件
propFile.load(is); //读取配置文件输入流
is.close(); //关闭输入流
if(propFile.containsKey(key)){ //获取配置文件中的参数值
value = propFile.getProperty(key);
return value;
}else
return value;
} catch (FileNotFoundException e) {
e.printStackTrace();
return "";
} catch (IOException e) {
e.printStackTrace();
return "";
} catch (Exception ex) {
ex.printStackTrace();
return "";
}
}//end getProperties()
用MyEclipse测试的时候一直报错,后来使用命令行调试的时候没有问题,能正确读取到参数值。
个人认为是使用MyEclipse时项目中也存在classpath,所以运行的时候没有调用环境变量的classpath导致。
具体原因有待测试后才能下结论。
-----------------------有点小邪恶的分割线--------------------------------------
经过测试发现是Eclipse会自行设置classpath,而不会使用环境变量的classpath。
直接运行会报 FileNotFoundException 。
解决办法:在Eclipse中添加classpath参数
Run -> Run Configurations -> Classpath -> Advanced .. -> Add Variable String
选 env_var ,Argument 处填:CLASSPATH 。这样就可以使用环境变量classpath了。