java.util.MissingResourceException:找不到基本名称“property_file名称”的捆绑包,区域设置en_US

2022-09-01 01:02:19

我正在尝试创建一个实用程序类,用于从属性文件中读取数据。虽然我的类位于 util 目录下,但我的文件被放在其他目录中。ReadPropertyUtil.javaskyscrapper.properties

但是,当我尝试使用访问属性时,我得到异常,该捆绑包无法加载。[ResourceBundle][1]

以下是我如何读取属性的代码,以及显示我的目录结构的图像。

读取属性利用.java

/**
 * Properties file name.
 */
private static final String FILENAME = "skyscrapper";

/**
 * Resource bundle.
 */
private static ResourceBundle resourceBundle = ResourceBundle.getBundle(FILENAME);

/**
 * Method to read the property value.
 * 
 * @param key
 * @return
 */
public static String getProperty(final String key) {
    String str = null;
    if (resourceBundle != null) {
        str = resourceBundle.getString(key);
            LOGGER.debug("Value found: " + str + " for key: " + key);
    } else {
            LOGGER.debug("Properties file was not loaded correctly!!");
    }
    return str;
}

目录结构

enter image description here

此行给出错误private static ResourceBundle resourceBundle = ResourceBundle.getBundle(FILENAME);

我无法理解为什么这不起作用以及解决方案是什么。该文件夹已完全添加到生成路径中。src


答案 1

尝试使用资源的完全限定名称

private static final String FILENAME = "resources/skyscrapper";

答案 2

资源捆绑包不加载文件?您需要先将文件放入资源中。如何只是加载到一个FileInputStream,然后一个属性资源Bundle

   FileInputStream fis = new FileInputStream("skyscrapper.properties");
   resourceBundle = new PropertyResourceBundle(fis);

或者,如果您需要特定于区域设置的代码,则类似下面的代码应该可以正常工作

File file = new File("skyscrapper.properties");
URL[] urls = {file.toURI().toURL()};
ClassLoader loader = new URLClassLoader(urls);
ResourceBundle rb = ResourceBundle.getBundle("skyscrapper", Locale.getDefault(), loader);