我正在尝试从我的项目的类路径以外的某个文件夹加载.properties
文件,以便加载ResourceBundle
国际化。我有这样的结构:
MyProject
|
- src
|
-com
|
-company
|
-UI
-launcher
-resources
|
-i18n.properties
-i18n_en_US.properties
-i18n_es_ES.properties
-i18n_zh_CN.properties
显然,将所有i18n
个文件放在与src
文件夹相同的级别更清晰。那么,我该如何加载它们呢?更准确地说,在加载我的资源包的行中,我该如何放置baseName
部分?
bundle = ResourceBundle.getBundle(baseName,localeInSettings);
我已经看到了答案,但不太清楚。当我找到一些东西时,我会与所有人分享并使其更清晰。
答案 0 :(得分:0)
它仍然在类路径中。只是不在默认包中。所以基本名称应该是
com.company.resources.i18n
答案 1 :(得分:0)
实验证明,这两种形式都有效:
com/WindThunderStudio/resources/i18n
和
com.WindThunderStudio.resources.i18n
首先,它与加载普通属性文件不同,在完整路径之前,您没有注意到带有“/”的绝对路径。
其次,第一个表单的工作方式与我们预期的一样,因为baseName需要“完全限定名称”,即带有“。”的路径。作为第二种形式,我们可以引用ResourceBundle
的JavaDoc页面:
注意:baseName参数应该是完全限定的类名。但是,为了与早期版本兼容,Sun的Java SE运行时环境不会对此进行验证,因此可以通过指定路径名(使用“/”)而不是完全限定的类名(使用“。”)来访问PropertyResourceBundles。