我正在构建两个使用commons-configuration XMLConfiguration的应用程序。由于应用程序是相关的,我构建了另一个名为commons的项目,它有一个自定义配置管理器,可以像这样初始化XMLConfiguration:
config = new XMLConfiguration("conf/config.xml");
“命令行”应用程序运行正常,加载配置文件会发生什么。但是当我尝试在webapp上使用我的自定义配置管理器(使用Tomcat)时,我得到了一个
org.apache.commons.configuration.ConfigurationException:找不到配置源
我已将conf目录放在WEB-INF文件夹,根文件夹和META-INF文件夹中。我也尝试过"/conf/config.xml"
,"./conf/config.xml"
和"../conf/config.xml"
。
我唯一一次上网 - 在网络应用上 - 正在使用绝对路径。
我错过了什么?
谢谢, 布鲁诺
答案 0 :(得分:2)
使用ServletContext.getResourceAsStream(..)
,然后传递信息流。或者,如果文件位于类路径中,则可以使用getClass().getResourceAsStream(..)
答案 1 :(得分:2)
实际上,org.apache.commons.configuration.XMLConfiguration
没有接受InputStream
的构造函数,因此getClass().getResourceAsStream()
将无效。但是,有一个XMLConfiguration
构造函数可以使用网址,因此请使用getClass().getResource()
。