2010-02-26 23 views
6

我正在運行Eclipse,並試圖創建一個簡單的測試程序,試圖用我們的ResourceBundle與幾個不同的文件。該文件正確命名爲ResourceFile_us_US.properties。但是我在getBundle()調用中得到一個異常,因爲它顯然無法找到該文件。它應該放在哪裏以便找到它?ResourceBundle.getBundle(「ResourceFile」,new Locale(「us」,「US」))在哪裏查找文件?

+1

us_US?你想要en_US嗎? – 2010-02-26 20:31:54

回答

1

我相信它只是在類路徑中查找。

12

你知道java正在尋找特定語言環境中的屬性文件。你可能會感到困惑,爲什麼java一直抱怨它無法找到屬性文件。有幾件事情調試這種類型的錯誤時要記住:

  1. 文件是由類加載器,類似於Java類加載這些資源屬性。所以你需要將它們包含在你的運行時類路徑中。

  2. 這些資源具有完全限定資源名稱,類似於完全限定類名,摘錄不能將資源導入到java源文件中。爲什麼?因爲它的名字採用字符串的形式。

  3. ResourceBundle.getBundle("config")通知類加載器使用默認包(即沒有包)加載名爲"config"的資源。它並不意味着當前包含引用類的資源。

  4. ResourceBundle.getBundle("com.cheng.scrap.config")告訴類加載器加載一個名爲"config"資源與包"com.cheng.scrap."它的完全限定資源名稱是"com.cheng.scrap.config"

更多:Can't find bundle for base name com...config, locale zh_CN

乾杯。

1

一兩種:

  1. /src目錄/資源 確保您有語言環境資源包文件的名稱。例如津巴布韋,它將是ResourceBundle_en_ZW.properties,您可以將其加載爲ResourceBundle resourceBundle = ResourceBundle.getBunndle(「ResourceBundle」,Locale.getDefault());

  2. 在你的類路徑中。確保calsspath環境變量設置

6

如果您創建一個包resources並把文件hello_en_US.properties 裏面,其中有內容:

你好=世界您好!

您可以用下面的代碼打印問候的內容:

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")); 

    } 
}