我有本地化的JavaFX应用程序。但是,由于FXML Loader无法找到本地化包,我无法使其工作
Caused by: java.util.MissingResourceException: Can't find bundle for base name bundles.lcars, locale en_US
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1564)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1387)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:845)
at cz.muni.fi.pv168.view.GUI.start(GUI.java:24)
结构体:
GUI主类:
public void start(Stage primaryStage) throws Exception {
Locale locale = Locale.getDefault();
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setResources(ResourceBundle.getBundle("bundles.lcars", locale));
Parent root = FXMLLoader.load(getClass().getResource("lcars.fxml"),ResourceBundle.getBundle("bundles" +
".lcars", locale));
Scene scene = new Scene(root, 1920 , 1080); // 19:10
// set scene to stage and other irrelevant stuff
}
我也尝试将bundles文件夹移到根包,但没有成功。另外,我尝试了每个已经回答的问题,以查询“找不到基本名称的捆绑包”。
编辑@Slaw
我将代码更改为此,仍然没有成功
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("lcars.fxml"));
fxmlLoader.setResources(ResourceBundle.getBundle("bundles.lcars", locale));
Parent root = fxmlLoader.load();
谢谢你的帮助。
最佳答案
尝试使用ResourceBundle类:
private static ResourceBundle language = ResourceBundle.getBundle(
"cz.muni.fi.pv168.gui.GUI", Locale.getDefault());
我的文件结构是这样的:
由此您应该了解如何设置。
您可以像这样引用本地化的字符串:
language.getString("agentsEmptyBirthDateMessage")
关于java - JavaFX语言环境包:找不到基本名称的包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50665255/