Java ResourceBundle.getBundle(";ResourceFile";,new Locale(";us";,";us";)在哪里查找该文件?

Java ResourceBundle.getBundle(";ResourceFile";,new Locale(";us";,";us";)在哪里查找该文件?,java,localization,resourcebundle,Java,Localization,Resourcebundle,我正在运行Eclipse,并尝试创建一个简单的测试程序,使用两个不同的文件尝试我们的ResourceBundle。该文件正确命名为ResourceFile\u us\u us.properties。但是我在getBundle()调用中遇到一个异常,因为它显然找不到文件。它应该放在哪里才能找到?我相信它只是在类路径中查找。您知道java正在特定区域中查找属性文件。您可能会感到困惑,为什么java一直在抱怨它找不到就在那里的属性文件。调试此类错误时要记住以下几点: 这些资源属性文件由类加载器加载,类

我正在运行Eclipse,并尝试创建一个简单的测试程序,使用两个不同的文件尝试我们的ResourceBundle。该文件正确命名为ResourceFile\u us\u us.properties。但是我在getBundle()调用中遇到一个异常,因为它显然找不到文件。它应该放在哪里才能找到?

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

您知道java正在特定区域中查找属性文件。您可能会感到困惑,为什么java一直在抱怨它找不到就在那里的属性文件。调试此类错误时要记住以下几点:

  • 这些资源属性文件由类加载器加载,类似于java类。因此,您需要将它们包含在运行时类路径中

  • 这些资源具有完全限定的资源名,类似于完全限定的类名,摘录您不能将资源导入java源文件。为什么?因为它的名称采用字符串的形式

  • ResourceBundle.getBundle(“config”)
    告诉类加载器加载名为
    “config”
    的带有默认包(即没有包)的资源。它并不意味着当前包中具有引用类的资源

  • ResourceBundle.getBundle(“com.cheng.scrape.config”)
    告诉类加载器加载名为
    “config”
    的资源和包
    “com.cheng.scrape.config”。
    其完全限定的资源名为
    “com.cheng.scrape.config”

  • 更多:

    干杯。

    两个选项中的一个:

  • /高级文书主任/资源 确保在资源包文件的名称中包含区域设置。e、 g对于津巴布韦,它将是ResourceBundle_en_ZW.properties,您将作为ResourceBundle ResourceBundle=ResourceBundle.getBundle(“ResourceBundle”,Locale.getDefault())加载它

  • 在您的类路径中。确保已设置calsspath环境变量


  • 如果您创建一个包
    resources
    并将文件
    hello\u en\u US.properties
    其内部包含以下内容:

    你好=你好,世界

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