如何在 JSF 应用程序中加载属性文件?

How to load properties file in a JSF application?

我正在尝试在我正在处理的 JSF 应用程序中加载 properties 文件,但我无法引用该文件。

package com.nivis.util;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class PropHandler {

    String result = "";
    InputStream inputStream;

    public void loadProp() {

        try {

            inputStream = this.getClass().getResourceAsStream("prop.properties");

            if (inputStream == null) {
                System.err.println("===== Did not load =====");
            } else {
                System.err.println("===== Loaded =====");
            }

        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            try {
                inputStream.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        PropHandler ph = new PropHandler();
        ph.loadProp();
    }
}

该文件位于同一个包中,在我搜索它时发现的不同示例中,应该可以。我还尝试将文件放在应用程序中每个可以想到的地方,并据我所知引用它,但它不起作用。

(只有我测试过的部分文件夹放文件)

我做错了什么?

最理想的情况是,我希望将它放在我用于 msg.properties 文件的同一文件夹中。

try something like this

ClassLoader classloader = Thread.currentThread().getContextClassLoader();
InputStream is = classloader.getResourceAsStream("prop.properties");

this answer 所述,com/nivis/prop.properties 应该 是引用资源文件夹中嵌套文件的正确方法。
但是因为您没有使用 ClassLoader classloader = Thread.currentThread().getContextClassLoader(); 来定位 Classloader ,您必须使用以“/”开头的绝对路径 导致 /com/nivis/prop.properties