2

ResourceBundlesローカリゼーションには使用しないことを除いて、 に似たシステムが必要です。基本的に、いくつかのバージョンの設定を保存する必要があります。Propertiesその設定の 1 つのバージョンは、ファイルで表すことができる String-to-String マップです。これらの設定バージョンは、アプリケーション .jar 内のファイル システムに簡単に保存する必要があります (同様に PropertyResourceBundle)。

アイデアは、ユーザーの決定に基づいてアプリケーションの起動時に選択できる、文字列型のキーと値のペアで表される、さまざまなバージョンのアプリケーション設定 (設定プロファイル) を持つことです。繰り返しますが、これらは言語バージョンではないため、ResourceBundle(javadoc によると) 実装する正しい方法ではありません。

自分で考えて全体を実装せずにそれを行う簡単な方法はありますか? Java SE クラスのみを使用するようサードパーティに提案しないでください。


編集: 1 つの重要な詳細について言及するのを忘れていました。このようなストリームを取得するのは難しいでしょう: Thread.currentThread().getContextClassLoader().getResourceAsStream("/your/resource/here");. これは、プロパティ ファイルを含むプロジェクトが Ant によってコンパイルされ、実際に実行されるさまざまな GUI プロジェクトで動的に読み込まれるライブラリとして使用されるためです。すべてのプロパティ ファイルが固定プロジェクト フォルダにある可能性がありますが、Thread.currentThread().getContextClassLoader()GUI プロジェクトのコンテキストが返されるため、Ant によって配置されたプロパティ ファイルを含む .jar がそのプロジェクトのどこにあったかがわからないため、何を として使用すればよいかわかりません"/your/resource/here"

4

1 に答える 1

2

私は質問を誤解しているかもしれませんが、私には次のようなことが簡単にできるようです:

InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("/your/resource/here");
Properties prop = new Properties();
prop.load(inputStream);

これは Java EE 環境でも安全であり、設定を変更したい場合はいつでも呼び出すことができます。

更新: リソースがクラスパス上にある限り、リソースのフルパスを知らなくても見つけることができるはずです。

于 2012-11-15T07:36:51.560 に答える