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"));
}
}
4条答案
按热度按时间k5hmc34c1#
你知道java正在寻找一个特定语言环境中的属性文件。你可能会困惑为什么java一直抱怨它找不到一个属性文件。调试这类错误时要记住几件事:
1.这些资源属性文件是由类加载器加载的,类似于java类,所以你需要把它们包含在你的运行时类路径中。
1.这些资源有完全限定的资源名,类似于完全限定的类名,摘录你不能导入资源到你的java源文件中,为什么?因为它的名字是字符串的形式。
ResourceBundle.getBundle("config")
告诉类加载器使用默认包(即没有包)加载名为"config"
的资源,但并不意味着当前包中的资源具有引用类。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
干杯。
smdncfj32#
如果您创建一个包
resources
并将文件hello_en_US.properties
放入其中,该文件包含以下内容:你好,世界!!
可以使用以下代码打印hello的内容:
gzszwxb43#
以下两项之一:
/src/resources
确保在资源包文件的名称中包含语言环境。例如,对于津巴布韦,它将是ResourceBundle_en_ZW.properties
,您将以ResourceBundle resourceBundle = ResourceBundle.getBunndle("ResourceBundle", Locale.getDefault());
的形式加载它1.在类路径中。请确保已设置类路径环境变量
7ajki6be4#
我相信它只是在类路径中查找。