java.util.MissingResourceException:找不到基本名称'property_file name'的包,语言环境en_US

新手上路,请多包涵

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

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

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

ReadPropertiesUtil.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;
}

目录结构

在此处输入图像描述

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

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

原文由 roger_that 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 610
2 个回答

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

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

原文由 Bludzee 发布,翻译遵循 CC BY-SA 3.0 许可协议

ResourceBundle 不加载文件?您需要先将文件放入资源中。加载到 FileInputStream 然后加载到 PropertyResourceBundle 怎么样

   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);

原文由 Ross Drew 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题