【问题标题】:Maintain Java Resource properties file Externally在外部维护 Java 资源属性文件
【发布时间】:2014-03-24 03:37:10
【问题描述】:

之前我将我的属性文件放在我的类路径 src/ 中。现在我想把它放在一个名为config/ 的文件夹中。这样最终用户实际上可以自己修改文件。

但是现在我下面的代码不再起作用了

ResourceBundle.getBundle("Messages", Locale.getDefault());

我所说的代码不再起作用的意思是,在我部署应用程序并修改 Messages_en_US.properties 后,更改不会发生。

我怎样才能实现我想要的?我应该使用getBundle 吗?

编辑

我也将config 文件夹添加到类路径中,但我不确定这是否相关。这是一个普通的 Java 应用程序,我没有使用 Maven 或任何构建工具。

【问题讨论】:

  • 您需要说明您是如何构建代码的以及这个config 目录的确切位置。一般来说,您的包将在类路径的根目录中查找,因此您可能需要指定 config.Messages 或类似名称。像 Maven 这样的构建系统的常用方法是将资源(如属性文件)放在单独的目录树中(如 src/main/resources),它们最终位于类路径的根目录中。
  • 您如何构建,更重要的是,您如何运行它。向我们展示各种文件的位置、执行 java 命令的位置以及正在执行的命令。
  • 我已经更新了截图。
  • 好的。所以你有一个 Eclipse 项目,并将 config 定义为源文件夹,对吗?当你执行上面的代码时会发生什么?您的默认语言环境是什么?
  • 当我在config 中编辑属性文件时,不会发生更改。默认语言环境是en_US

标签: java resourcebundle


【解决方案1】:

默认情况下,ResourceBundle 仅在首次请求时加载,并在后续请求中重复使用。你可以用ResourceBundle.clearCache();扔掉缓存的ResourceBundles

另外,by default,ResourceBundles 是从类路径加载的。因此,您必须确保有问题的类加载器也不缓存资源。或者你可以provide你自己的ResourceBundle.Control以任何你喜欢的方式加载属性文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2014-09-29
    • 2015-01-03
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    相关资源
    最近更新 更多