我正在研究大量使用資源包和i18n的J2SE應用程序(請考慮kiosk風格的應用程序)。這不僅包括翻譯,還包括格式和其他國際性問題。我們有定製的邏輯來使資源加載均勻化,但它非常簡單。我遇到的問題是MissingResourceException
。即使我忽略了應用程序中的自定義邏輯,並直接調用ResourceBundle
類來加載此特定包,但Java無法爲特定區域加載它。這裏是根異常與堆棧跟蹤:Java缺少資源
Caused by: java.util.MissingResourceException: Can't find bundle for base name version1/FormatResource, locale en_GB
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:836)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:726)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:576)
資源包是放在Eclipse的一個類文件夾是在我的類路徑的頂部目錄「VERSION1」。該文件夾包含其他資源包,它們使用相同的資源包加載邏輯加載正常,以及許多使用系統類加載器加載時也能正常加載的XML配置。資源包的相關文件是:
FormatResource_cs_CZ.properties
FormatResource_en_GB.properties
FormatResource_fr_BE.properties
FormatResource_fr_FR.properties
FormatResource_hu_HU.properties
FormatResource_nl_BE.properties
FormatResource_nl_NL.properties
FormatResource_pl_PL.properties
FormatResource_sk_SK.properties
當我的應用程序在波蘭語言環境中啓動時,一切正常。如果我以波蘭語區域的用戶身份登錄,則一切正常。如果我以英國用戶身份登錄,應用程序會嘗試加載所有en_GB捆綁包(翻譯,格式化程序等),並在此捆綁包上失敗。它找不到FormatResource_en_GB.properties
,這顯然是在類路徑中:上述文件列表是從命令行復制並粘貼的。
我覺得有趣的最後一個問題是,如果我在版本1目錄中定義FormatResource_en_US.properties
,那麼即使是FormatResource_pl_PL.properties
文件也無法加載,應用程序甚至無法啓動。
任何人有任何想法?