1

プロジェクトを jar にエクスポートするときに問題が発生します。ResourceBundles は、プロジェクトを Eclipse で実行すると正常に動作しますが、jar からは動作しません。Export -> jar fileとしてエクスポートしました。

(Windows) cmd -> java -jar %projectName%.jar で jar を開始します。ResourceBundle は次のとおりです。

  • Eclipse: %projectName% -> src -> 言語
  • jar: フォルダー内の言語。

そして、私はそれをこのようにロードします:

ResourceBundle.getBundle("language.Language", currentLocale)

Stackoverflow でこれに関する他の多くの質問を見ましたが、彼らの問題は常に、ルートからのパスを提供していないことでした。これが機能しない理由がわかりません。これらの .properties ファイルもルートに配置しようとしました...

注: これらのバンドル/ロケールを管理するクラスも同じパッケージにあります。

前もって感謝します。

編集:おそらくいくつかの追加情報、私はこの方法で文字列を取得します:

public static String getString(String key) {
        try {
            return ResourceBundle.getBundle("language.Language", currentLocale)
                    .getString(key);
        } catch (MissingResourceException e) {
            return "KEY " + key + " NOT FOUND !";
        }
}

スタックトレース:

Exception in thread "main" java.util.MissingResourceException: Can't find bundle
 for base name language.Language, locale nl_be
        at java.util.ResourceBundle.throwMissingResourceException(Unknown Source)
        at java.util.ResourceBundle.getBundleImpl(Unknown Source)
        at java.util.ResourceBundle.getBundle(Unknown Source)
        at language.LanguageModel.getString(LanguageModel.java:33)
        at cli.class.method(class.java:35)
        at main.Main.main(Main.java:26)

プロパティ:

Language_en_US.properties
Language_fr_FR.properties
Language_nl_BE.properties
....
4

1 に答える 1

3

引数で渡すロケールにResourceBundle.getBundle()は、国が「be」に設定されています。代わりに「BE」に設定する必要があります。

また、言語コードのサフィックスのみを持つプロパティ ファイルの使用を検討し、サフィックスのない 1 つのバックアップ バンドルを用意する必要があります。

  • 言語 : 最後の手段として使用されます
  • Language_nl : 言語が「nl」の場合に使用されます
  • Language_nl_BE : ベルギーに固有の場合、Language_nl からの翻訳をオーバーライドする必要があります
于 2013-03-15T22:31:09.027 に答える