带有属性文件的FileNotFoundException

时间:2014-01-28 18:32:55

标签: java spring-mvc properties

我正在尝试从backupData.properties读取一些道具。它位于WEB-INF/classes/。这就是我的方式:

public class Configures {

    private static final String INPUT_FILE = "WEB-INF//classes//backupData.properties"; 


    public static String getMail() {
        Properties prop = new Properties();
        try {
            //load a properties file
            prop.load(new FileInputStream(INPUT_FILE));

            //get the property value
            return prop.getProperty("mail");

        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return null;
    }
}

INPUT_FILE应包含哪些内容?我试图将它放在src中,就像src//backupData.properties一样,但它会抛出FileNotFoundException。我用谷歌搜索该文件应该位于CLASSPATH(我所理解的WEB-INF/classes中)。怎么了?

PS。我正在使用Spring。

2 个答案:

答案 0 :(得分:2)

这与Spring无关。如果要部署Web应用程序,WEB-INF/classes中的所有内容都将从类路径的根目录开始显示。

您可以使用

获取该资源的InputStream
InputStream in = Configures.class.getResourceAsStream("/backupData.properties");
prop.load(in);

由于Web应用程序并非始终从其.war文件中提取,因此实际属性文件可能仅作为zip条目存在。因此,您不能(也不应该)使用FileInputStream检索它。

Here's the javadoc.

答案 1 :(得分:1)

由于您使用的是SPRING,我建议您“CAN”将其用作Bean定义的一部分:

<property name="template" value="classpath:/backupData.properties">

Resource template = ctx.getResource("classpath:/backupData.properties");

@Sotirios Delimanolis

建议的普通老年人