【发布时间】:2012-06-06 09:41:17
【问题描述】:
我已经看到了一些关于如何通过 getResourceAsStream 在 jar 中加载特定文件的答案,我可以管理它。 但是,我正面临一些非常具体的问题,我无法在论坛上找到有关此问题的答案。
这里是配置:
我有一个 jar 文件,其中有一个 conf 目录,其中包含 2 个属性文件 messages_en_US.properties 和 messages_fr_FR.properties。加载此类资源的经典方法是使用
ResourceBundle.getBundle("messages", java.util.Locale.getDefault());
如果文件在磁盘上,在程序类路径引用的目录中,则可以正常工作。但我不知道如何管理组合使用 ResourceBundle.getBundle 和使用 jar 中的资源。 确实,因为我看不到任何通过 getResourceAsStream 的桥梁(或者这意味着我自己管理语言环境以指定整个资源文件名,这不是很聪明)。
【问题讨论】:
-
你在 JAR 中哪里有那个文件?如果它留在 JAR 中,则意味着您在类路径中拥有它,并且使用 ResourceBundle.getBundle 正常加载它应该没有问题
-
我有同样的问题,我在 jar 文件中有一个属性资源,但该 jar 文件不在程序类路径中。我阅读了 PropertyResourceBundle 的 javadoc,我知道我可以使用 inputstream 来做到这一点,但 inputstream 意味着 IO 它每次都会读取文件并且我失去了默认的 ResourceBundle 缓存。有没有办法指示 ResourceBundle 类从其类路径之外的资源中获取包?
-
ResourceBundle.Control 也可以实现自定义,但似乎有点矫枉过正,最好找到将属性文件放在类路径中的方法。
标签: java jar resourcebundle