尝试将 .properties 文件加载到资源包中时出现错误 "Can't find bundle for base name"
Trying to load a .properties file into Resource bundle getting error "Can't find bundle for base name"
我正在尝试将 .properties
文件加载到我的 ResourceBundle
public class Main extends Application {
@Override
public void start(Stage stage) throws Exception{
ResourceBundle bundle = ResourceBundle.getBundle("/sample/resources/language_en.properties");
FXMLLoader loader = new FXMLLoader(getClass().getResource("/sample/layout/test_form.fxml"), bundle);
}
}
但我收到错误消息:
Caused by: java.util.MissingResourceException: Can't find bundle for base name /sample/resources/language_en.properties, locale en_US
不明白为什么。我已经多次 /sample/resources/language_en.properties
检查路径是否存在拼写错误。我也尝试过重建项目(使用 IntelliJ)。
有人知道为什么吗?
加载资源包时,基本名称扩展中没有 .properties
。此外,删除基本名称的前导 /
。
使用ResourceBundle bundle = ResourceBundle.getBundle("sample/resources/language_en");
方法 ResourceBundle.getBundle()
采用资源包的基本名称,一个完全限定的 class 名称(由 class 文档指定)。您可以像这样加载您的包:
// this will load the base bundle: sample/resources/language.properties
ResourceBundle bundle = ResourceBundle.getBundle("sample.resources.language");
要使用英文 ResourceBundle
,您可以指定 Locale
:
// this will load sample/resources/language_en.properties
ResourceBundle bundle = ResourceBundle.getBundle("sample.resources.language", Locale.ENGLISH);
更多信息请参考本教程:Customizing Resource Bundle Loading
我正在尝试将 .properties
文件加载到我的 ResourceBundle
public class Main extends Application {
@Override
public void start(Stage stage) throws Exception{
ResourceBundle bundle = ResourceBundle.getBundle("/sample/resources/language_en.properties");
FXMLLoader loader = new FXMLLoader(getClass().getResource("/sample/layout/test_form.fxml"), bundle);
}
}
但我收到错误消息:
Caused by: java.util.MissingResourceException: Can't find bundle for base name /sample/resources/language_en.properties, locale en_US
不明白为什么。我已经多次 /sample/resources/language_en.properties
检查路径是否存在拼写错误。我也尝试过重建项目(使用 IntelliJ)。
有人知道为什么吗?
加载资源包时,基本名称扩展中没有 .properties
。此外,删除基本名称的前导 /
。
使用ResourceBundle bundle = ResourceBundle.getBundle("sample/resources/language_en");
方法 ResourceBundle.getBundle()
采用资源包的基本名称,一个完全限定的 class 名称(由 class 文档指定)。您可以像这样加载您的包:
// this will load the base bundle: sample/resources/language.properties
ResourceBundle bundle = ResourceBundle.getBundle("sample.resources.language");
要使用英文 ResourceBundle
,您可以指定 Locale
:
// this will load sample/resources/language_en.properties
ResourceBundle bundle = ResourceBundle.getBundle("sample.resources.language", Locale.ENGLISH);
更多信息请参考本教程:Customizing Resource Bundle Loading