这是我的经验:如果你放一个“。” 在名称中,然后 ResourceBundle.getBundle() 将寻找一个类而不是属性文件。该类将如下所示:
导入 java.util.ListResourceBundle;
public class DataEncryptionStrings extends ListResourceBundle {
@Override
protected Object[][] getContents() {
return new Object[][] {
{"ErrorCreateKeystoreInstance", "an exception occurred creating the keystore instance"},
{"ErrorLoadInitialKeystore", "an exception occurred loading the initial keystore"},
{"ErrorLoadKeystore", "an exception occurred loading the keystore"},
它遵循命名约定:
{classname}.class 是默认类
{classname}_en_US.class 是英语美国类
{classname}_fr_FR.class 在法语类中
如果你没有任何“。” 在名称中但有一个“/”,然后它将查找属性文件。
如果您没有“。” 名称中的“/”,我认为属性文件或 ListResourceBundle 都可以使用。它会找到你提供的任何东西。我不确定所有虚拟机的行为是否相同。
我遇到的让我对寻找解决方案感兴趣的问题是我有一个带有“.”的文件名。我很确定我的问题是我实现了属性文件而不是 ListResourceBundle 类,并且文件名包含“。” 在其中, ResourceBundle.getBundle(name) 寻找 ListResourceBundle 类。当我替换“。”时 在带有“_”的文件名中,
User68883 似乎使用的是绝对地址“/fontawesome/fontawesome.properties”,而不是相对地址“fontawesome/fontawesome.properties”。此外,在 ResourceBundle.getBundle 上,切勿在名称或区域设置中包含文件扩展名。这就是 ResouceBundle 自动为您做的事情,因为它通过解析过程来获取您在设备区域设置的资源目录中拥有的最佳资源。