我正在尝试从项目的类路径以外的某个文件夹加载.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);我已经看到了答案,但不是很清楚。当我找到一些东西时,我会与所有人分享,并让它变得更清晰。
发布于 2016-08-08 00:24:55
它仍然在类路径中。只是不在默认的包中。所以基名应该是
com.company.resources.i18n发布于 2016-08-08 00:27:19
正如实验证明的那样,这两种形式都有效:
com/WindThunderStudio/resources/i18n和,
com.WindThunderStudio.resources.i18n首先,它不同于加载普通的属性文件,在完整的路径之前,你不需要用"/“来标注你的绝对路径。
其次,第一种形式如我们所期望的那样工作,因为baseName需要“全限定名”,即带有".“的路径。作为第二种形式,我们可以引用ResourceBundle的JavaDoc页面
注意: baseName参数应该是一个完全限定的类名。但是,为了与早期版本兼容,Sun的Java运行时环境不会验证这一点,因此可以通过指定路径名(使用"/")而不是完全限定的类名(使用“.”)来访问PropertyResourceBundles。
https://stackoverflow.com/questions/38816150
复制相似问题