我正在运行 Eclipse 并尝试创建一个简单的测试程序来尝试我们的 ResourceBundle 与几个不同的文件。该文件被正确命名为 ResourceFile_us_US.properties。但是我在 getBundle() 调用中遇到异常,因为它显然找不到该文件。它应该放在哪里以便可以找到它?
4 回答
您知道 java 正在寻找特定语言环境中的属性文件。您可能会感到困惑,为什么 java 一直抱怨它找不到一个属性文件就在那里。调试此类错误时要记住以下几点:
这些资源属性文件由类加载器加载,类似于 java 类。所以你需要将它们包含在你的运行时类路径中。
这些资源具有完全限定的资源名称,类似于完全限定的类名称,摘录您无法将资源导入 java 源文件。为什么?因为它的名字采用字符串的形式。
ResourceBundle.getBundle("config")
告诉类加载器加载以"config"
默认包命名的资源(即无包)。这并不意味着当前包中具有引用类的资源。ResourceBundle.getBundle("com.cheng.scrap.config")
告诉类加载器加载一个以"config"
包命名的资源"com.cheng.scrap."
它的完全限定资源名称是"com.cheng.scrap.config"
更多:找不到基本名称 com...config、区域设置 zh_CN 的捆绑包
干杯。
如果您创建一个包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"));
}
}
我相信它只是在类路径中。
两种之一:
/src/resources 确保在资源包文件的名称中包含语言环境。例如,对于津巴布韦,它将是 ResourceBundle_en_ZW.properties,您可以将其加载为 ResourceBundle resourceBundle = ResourceBundle.getBunndle("ResourceBundle", Locale.getDefault());
在你的类路径中。确保设置了 calsspath 环境变量