我正在运行Eclipse并尝试使用几个不同的文件创建一个简单的测试程序来尝试我们的ResourceBundle。该文件正确命名为ResourceFile_us_US.properties。但我在getBundle()调用上遇到异常,因为它显然无法找到该文件。它应该放在哪里,以便找到它?
答案 0 :(得分:14)
您知道java正在寻找特定区域设置中的属性文件。你可能会感到困惑,为什么java一直在抱怨它无法找到正确的属性文件。调试此类错误时需要注意以下几点:
这些资源属性文件由类加载器加载,类似于java类。因此,您需要将它们包含在运行时类路径中。
这些资源具有完全限定资源名称,类似于完全限定类名称,摘录您无法将资源导入Java源文件。为什么?因为它的名称采用字符串的形式。
ResourceBundle.getBundle("config")
告诉类加载器使用默认包(即没有包)加载名为"config"
的资源。它并不意味着当前包中具有引用类的资源。
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 :(得分: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)
两个中的一个:
/ SRC /资源 确保在资源包文件的名称中包含区域设置。例如对于津巴布韦,它将是ResourceBundle_en_ZW.properties,你可以将其加载为ResourceBundle resourceBundle = ResourceBundle.getBunndle(“ResourceBundle”,Locale.getDefault());
在您的类路径中。确保设置了calsspath环境变量