2

プロパティ ファイルを参照して値を読み取る EJB 2.1 アプリケーションがあります。プロパティ ファイルのファイル名は次のように定義されます。

private static final String CONFIG_DIRECTORY = "config.";
private static final String PROPERTIES_FILE = CONFIG_DIRECTORY + "myapp";

プロパティ ファイルからプロパティを読み込んで読み込むには、次の呼び出しを行い、propertyFileName の名前として PROPERTIES_FILE を渡します。

this.getProperties(PROPERTIES_FILE);

このgetPropertiesメソッドは、以下に示すように、ResourceBundle を使用してプロパティ ファイルを読み込みます。

public Properties getProperties (String propertyFileName) {
        Properties properties = new Properties();
        ResourceBundle resourceBundle = ResourceBundle.getBundle(propertyFileName);
        Enumeration<String> keys = resourceBundle.getKeys();

        while (keys.hasMoreElements()) {
            String key = (String)keys.nextElement();
            String value = resourceBundle.getString(key);
            properties.put(key, value);
        }
        return properties;
    }

今、アプリケーションのファイル システム内のあらゆる場所で config.myapp というファイルを見つけようと何年も費やしてきましたが、存在しません。ファイルシステム全体でそのファイルを検索しましたが、そこにはありません。すべてのフォルダー、jar ファイルなどを調べましたが、config.myapp というファイルが見つかりません。

アプリケーションのルート ディレクトリに「config」というフォルダがあり、そのフォルダ内にmyapp.properties、アプリケーションによって読み取られるプロパティを含むというファイルがあります。それconfig.myappは実際にconfig/myapp.propertiesファイルを参照している可能性がありますか?もしそうなら、それはどのように機能しますか?どういうわけかにResourceBundle翻訳config.myappされconfig/myapp.propertiesますか?

4

3 に答える 3

2

ドットをスラッシュに置き換え、.properties を追加することは、予期される動作です。のドキュメントからResourceBundle.getBundle

それ以外の場合、getBundle はプロパティ リソース ファイルを見つけようとします。すべての "." を置き換えることにより、候補のバンドル名からパス名を生成します。"/" を含む文字と文字列 ".properties" を追加します。ClassLoader.getResource を使用して、この名前の「リソース」を見つけようとします。

于 2012-12-31T02:26:18.893 に答える