私は Eclipse を実行しており、いくつかの異なるファイルを使用して ResourceBundle を試す簡単なテスト プログラムを作成しようとしています。このファイルは、ResourceFile_us_US.properties という適切な名前が付けられています。しかし、明らかにファイルが見つからないため、getBundle() 呼び出しで例外が発生します。見つけられるように、どこに配置する必要がありますか?
4 に答える
Java が特定のロケールでプロパティー・ファイルを探していることがわかります。java がすぐそこにあるプロパティ ファイルが見つからないと不平を言い続ける理由に当惑するかもしれません。このタイプのエラーをデバッグするときは、次の点に注意してください。
これらのリソース プロパティ ファイルは、Java クラスと同様にクラスローダによってロードされます。したがって、ランタイム クラスパスにそれらを含める必要があります。
これらのリソースには、完全修飾クラス名に似た完全修飾リソース名があり、Java ソース ファイルにリソースをインポートできないという抜粋です。なんで?その名前は文字列の形式を取るためです。
ResourceBundle.getBundle("config")
"config"
クラスローダに、デフォルト パッケージ (つまり、パッケージなし) で指定されたリソースをロードするように指示します。参照クラスを持つ現在のパッケージ内のリソースを意味するわけではありません。ResourceBundle.getBundle("com.cheng.scrap.config")
"config"
パッケージで指定されたリソースをロードするようにクラスローダーに指示します"com.cheng.scrap."
。その完全修飾リソース名は次のとおりです。"com.cheng.scrap.config"
詳細 :ベース名 com...config、ロケール zh_CN のバンドルが見つかりません
乾杯。
パッケージを作成し、その中にresources
ファイルを配置するhello_en_US.properties
と、次の内容が含まれます。
hello = ハローワールド!!
次のコードを使用して、hello の内容を出力できます。
package localization;
import java.util.Locale;
import java.util.ResourceBundle;
public class ResourceBundleDemo {
public static void main(String[] args) {
Locale en_US = new Locale("en", "US");
ResourceBundle bundle = ResourceBundle.getBundle("resources.hello", en_US);
// print the value of the key "hello"
System.out.println("" + bundle.getString("hello"));
}
}
2 つのうちの 1 つ:
/src/resources リソース バンドル ファイルの名前にロケールが含まれていることを確認してください。たとえば、ジンバブエの場合は ResourceBundle_en_ZW.properties になり、ResourceBundle resourceBundle = ResourceBundle.getBundle("ResourceBundle", Locale.getDefault()); としてロードします。
あなたのクラスパスで。calsspath 環境変数が設定されていることを確認します
クラスパスに見えるだけだと思います。