java getBundle(“ResourceFile”,新区域设置(“us”,“US”))在哪里查找文件?

ddrv8njm  于 2023-02-14  发布在  Java
关注(0)|答案(4)|浏览(106)

我正在运行Eclipse,并尝试创建一个简单的测试程序,用几个不同的文件来尝试我们的ResourceBundle。该文件被正确命名为ResourceFile_us_US. properties。但是我在getBundle()调用时遇到了一个异常,因为它显然找不到该文件。它应该位于何处才能被找到?

k5hmc34c

k5hmc34c1#

你知道java正在寻找一个特定语言环境中的属性文件。你可能会困惑为什么java一直抱怨它找不到一个属性文件。调试这类错误时要记住几件事:
1.这些资源属性文件是由类加载器加载的,类似于java类,所以你需要把它们包含在你的运行时类路径中。
1.这些资源有完全限定的资源名,类似于完全限定的类名,摘录你不能导入资源到你的java源文件中,为什么?因为它的名字是字符串的形式。

  1. ResourceBundle.getBundle("config")告诉类加载器使用默认包(即没有包)加载名为"config"的资源,但并不意味着当前包中的资源具有引用类。
  2. ResourceBundle.getBundle("com.cheng.scrap.config")告知类加载器使用包"com.cheng.scrap."加载名为"config"的资源,其完全限定的资源名称为"com.cheng.scrap.config"
    更多信息:Can't find bundle for base name com...config, locale zh_CN
    干杯。
smdncfj3

smdncfj32#

如果您创建一个包resources并将文件hello_en_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"));

  }
}
gzszwxb4

gzszwxb43#

以下两项之一:

  1. /src/resources确保在资源包文件的名称中包含语言环境。例如,对于津巴布韦,它将是ResourceBundle_en_ZW.properties,您将以ResourceBundle resourceBundle = ResourceBundle.getBunndle("ResourceBundle", Locale.getDefault());的形式加载它
    1.在类路径中。请确保已设置类路径环境变量
7ajki6be

7ajki6be4#

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

相关问题