我在运行应用程序时遇到异常。此应用程序读取abc.properties文件,
Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name abc, locale en_US at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:853) at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:822) at java.util.ResourceBundle.getBundle(ResourceBundle.java:566) at com.ibm.dst.DailyExtract.getResourceBundle(DailyExtract.java:104) at com.ibm.dst.DailyExtract.main(DailyExtract.java:131)
abc.properties文件驻留在工作区中。 我使用RSA7作为IDE,有任何设置问题吗? 欢迎任何建议.....
提前多多感谢
答案 0 :(得分:12)
按照this post中的提示,看看你是否犯了其中一个错误,可能是(从链接中复制粘贴):
这些资源属性文件由类加载器加载,类似于java类。因此,您需要将它们包含在运行时类路径中。
这些资源具有完全限定资源名称,类似于完全限定类名称,摘录您无法将资源导入Java源文件。为什么?因为它的名称采用字符串的形式。
ResourceBundle.getBundle("config")
告诉类加载器使用默认包(即没有包)加载名为“config”的资源。它并不意味着当前包中具有引用类的资源。
ResourceBundle.getBundle("com.cheng.scrap.config")
告诉类加载器使用包“com.cheng.scrap”加载名为“config”的资源。它的完全限定资源名称是“com.cheng.scrap.config”
答案 1 :(得分:2)
您只需在获取文件时添加包名称
例如,如果您的属性名称是包a.b.c中的“ABC.properties”,那么下面的代码将完美地运行
ResourceBundle labels = ResourceBundle.getBundle("a.b.c.ABC");
答案 2 :(得分:2)
只需将资源文件复制到您的类文件所在的位置即可。
在我的情况下,我的目录是:
bin
- com
- brookf
- all my packages here.
将资源文件复制到bin文件夹。
答案 3 :(得分:1)
加载本地化内容的属性文件也会受到包命名的影响。如果您将属性文件放在org.example.com.foobar
这样的包中,并仅使用其名称abc
加载它,则还必须添加前缀org.example.com.foobar
。如果您将属性放在不同的位置(例如在根目录或另一个子目录中),则必须更改要加载的名称或类路径。
我将属性文件放在.java
文件所在的同一位置并使用
private static ResourceBundle RES = ResourceBundle.getBundle(NameOfTheCurrentClass.class.getCanonicalName());
答案 4 :(得分:1)
今天我遇到了同样的问题,我花了一段时间才弄清楚了(我用Eclipse作为IDE)。我的项目文件夹包含以下路径中的* .properties文件:
project/src/strings
由于strings是src的子文件夹,src已经在项目的构建路径中(参见Property Window),我只需要为* .properties-Files添加包含模式:
**/*.properties
* .java-Files(** / * .java)已经存在包含模式
也许你的IDE有类似的东西
答案 5 :(得分:0)
您的类路径中的文件是?如果是,请尝试将其重命名为abc_en_US.properties