【问题标题】:ResourceBundle Reloading Error in javajava中的ResourceBundle重新加载错误
【发布时间】:2017-03-24 10:05:49
【问题描述】:

我正在使用以下代码从我的项目中加载资源。

ResourceBundle props=ResourceBundle.getBundle("db");

加载正常。但是在这个加载之后,我正在修改同一个文件并试图从文件中获取最新的内容。 再次使用上面的代码加载相同的文件将返回旧文件内容。我认为它是从缓存中加载的。我们怎样才能重新加载这个资源呢?

【问题讨论】:

    标签: java maven resourcebundle


    【解决方案1】:

    是的,getBundle 工厂方法创建的资源包实例默认是缓存的,所以你可以通过以下方式避免这种情况

    1. 清除缓存。 ResourceBundle.clearCache(ClassLoader loader)
    2. 使用生存时间值管理缓存资源包实例的生命周期。使用方法类ResourceBundle.Control public long getTimeToLive(String baseName, Locale locale)

    3. 指定不缓存资源包实例。使用方法类ResourceBundle.Control public boolean needsReload(String baseName, Locale locale, String format, ClassLoader loader, ResourceBundle bundle, long loadTime)

    【讨论】:

    • 我尝试了 clearCache() 它仍然无法正常工作,我在将新内容写入文件后得到了旧的更改。
    • 我正在运行 maven 命令,它创建了一个包含所有已编译代码的 文件夹。但我正在修改文件夹 src/test/resource 中的资源。但是资源包正在从目标文件夹加载资源。你有什么解决办法吗?
    • 所有输出文件都将存放在目标文件夹中。因此,如果您要更改文件中的文本,您可以使用类路径。参考stackoverflow.com/questions/1464291/…
    • 感谢他的解决了。问题在于类路径加载
    猜你喜欢
    • 1970-01-01
    • 2017-03-22
    • 2017-05-21
    • 2014-03-01
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    相关资源
    最近更新 更多