PropertiesConfiguration如何引用config.properties

时间:2011-11-17 20:25:04

标签: apache configuration configuration-files

我是Java新手,请原谅我缺乏知识。我正在尝试在我的网络应用程序中使用属性文件。在研究时我发现这篇文章http://commons.apache.org/configuration/howto_properties.html看起来非常简单,所以我试图实现这一点。我试图按如下方式实施:

    Configuration config = new PropertiesConfiguration("stream.bundle.config"); 

我已经尝试过stream.bundle.config,bundle.config和许多其他组合,但每次我都会收到一个说明无法找到配置源的异常。该文件位于src下名为bundle的文件夹中。我的问题是a)文件应该在哪里? b)我应该如何参考它。我为自己缺乏知识而道歉。提前致谢。

更新:

我也试过

        FileInputStream in; 
    Properties p = new Properties();

    try{
        in  = new FileInputStream("config.properties");
        p.load(in);

    }
    catch(Exception e){
        System.out.println("Error: " + e);
    }

我得到java.io.FileNotFoundException:config.properties(系统找不到指定的文件)或java.io.FileNotFoundException:config(系统找不到指定的文件)

2 个答案:

答案 0 :(得分:2)

关于a)文件应该在哪里:

  • 在当前目录中
  • 在用户主目录中
  • 在类路径中

如果你考虑使用Java的Properties,你必须以某种方式获得一个InputStream。如果要从包中的类加载属性,则必须使用:

getClass().getResourceAsStream("resource.properties");

如果该类在另一个包中:

getClass().getResourceAsStream("some/pkg/resource.properties");

您可以尝试通过ClassLoader加载属性:

ClassLoader.getResourceAsStream ("some/pkg/resource.properties");

如果您有ServletContext,可以使用:

ServletContext.getResourceAsStream(..)

编辑:您应该使用全名(文件名+扩展名)引用您的文件。所以你的第一个 尝试应该是:

Configuration config = new PropertiesConfiguration("config.properties");

答案 1 :(得分:1)

试试这个:

Properties properties = new Properties();
try 
{
    properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("xyz.properties"));
} 
catch (IOException e) 
{
    // TODO Auto-generated catch block
    e.printStackTrace();
}