ResourceBundle.getBundle(“ResourceFile”,新的Locale(“us”,“US”))在哪里查找文件?

时间:2010-02-26 20:09:02

标签: java localization resourcebundle

我正在运行Eclipse并尝试使用几个不同的文件创建一个简单的测试程序来尝试我们的ResourceBundle。该文件正确命名为ResourceFile_us_US.properties。但我在getBundle()调用上遇到异常,因为它显然无法找到该文件。它应该放在哪里,以便找到它?

4 个答案:

答案 0 :(得分:14)

您知道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"

    < / LI>

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

    干杯。

答案 1 :(得分:7)

如果您创建了一个包resources并将文件hello_en_US.properties放入  在里面,它有内容:

  

hello = Hello World !!

您可以使用以下代码打印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)

我相信它只是在类路径中查找。

答案 3 :(得分:1)

两个中的一个:

  1. / SRC /资源 确保在资源包文件的名称中包含区域设置。例如对于津巴布韦,它将是ResourceBundle_en_ZW.properties,你可以将其加载为ResourceBundle resourceBundle = ResourceBundle.getBunndle(“ResourceBundle”,Locale.getDefault());

  2. 在您的类路径中。确保设置了calsspath环境变量