2013-08-29 63 views
3

我有一个java maven项目。我已经在src/main/resources文件夹中放置了一个属性文件。在servlet中加载属性文件?

src/main/resources 
    | 
    |___properties 
     | 
     | 
     |___custom_en_US.properties 

我在servlet中加载属性文件,如下所示。

ResourceBundle bundle = ResourceBundle.getBundle("classpath:properties/custom", request.getLocale()); 

但上面一行是抛出异常说没有找到资源。我如何给属性文件的路径?请帮帮我。

谢谢!

回答

3

摆脱“类路径”前缀:.getBundle("/properties/custom")

的“类路径”前缀是不是一个标准,它是由像春天一些框架定义。

+0

感谢您的回复,并且工作正常。但问题是我在proeprties文件中有20个关键值对。我希望它们以与它们在属性文件中相同的顺序加载。但是,当我在servlet中获取它们时,它们的顺序发生了变化。我怎样才能得到键值对他们是如何在属性文件相同的顺序?谢谢! – user755806

+1

你不应该依赖它,因为结构通常是一个哈希表,你不能拥有它。如果你想要它们,在它们前面添加一些东西(1_foo,2_bar),然后按顺序排列。但通常顺序不应该太重要 – Bozho

+0

我必须将它们放在html的选择框中。所以我需要他们。请告诉我,如果有什么我可以做的? – user755806

3

阅读从classpath中

Properties prop = new Properties(); 

try { 
    //load a properties file from class path, inside static method 
    prop.load(App.class.getClassLoader().getResourceAsStream("config.properties"));    
} catch (IOException ex) { 
    ex.printStackTrace(); 
} 
1

属性文件自“的src/main /资源”存在于类路径中,然后根据其定义的任何资源自动部署的根目录下复制/ build目录(例如,bin)。

为了从java类访问资源,在查找资源时使用前导斜杠'/'作为前缀,路径的其他部分取决于资源是否嵌套在子文件夹下。

为了访问“的src /主/资源/属性/ custom_en_US.properties”,使用:

this.getClass().getResourceAsStream("/properties/custom_en_US.properties"); 

tutorial解释了很好的在从classpath中读取一个资源文件的可能途径Java应用程序,值得一读。