java.util.MissingResourceException

java.util.MissingResourceException,java,resourcebundle,Java,Resourcebundle,我在运行应用程序时遇到以下异常。此应用程序读取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 jav

我在运行应用程序时遇到以下异常。此应用程序读取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) 线程“main”java.util.MissingResourceException中的异常:找不到基本名称abc、语言环境en_US的捆绑包 位于java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:853) 位于java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:822) 位于java.util.ResourceBundle.getBundle(ResourceBundle.java:566) 位于com.ibm.dst.DailyExtract.getResourceBundle(DailyExtract.java:104) 位于com.ibm.dst.DailyExtract.main(DailyExtract.java:131) abc.properties文件位于工作区中。 我使用RSA7作为IDE,是否存在任何设置问题? 欢迎提出任何建议

请提前多谢

按照中的提示进行操作,看看您是否犯了其中一个错误,可能是(从链接粘贴副本):

  • 这些资源属性文件由类加载器加载,类似于java类。因此,您需要将它们包含在运行时类路径中

  • 这些资源具有完全限定的资源名,类似于完全限定的类名,摘录您不能将资源导入java源文件。为什么?因为它的名称采用字符串的形式

  • ResourceBundle.getBundle(“config”)
    告诉类加载器加载名为“config”的资源和默认包(即,没有包)。它并不意味着当前包中具有引用类的资源

  • ResourceBundle.getBundle(“com.cheng.scrap.config”)
    告诉类加载器加载名为“config”的资源和包“com.cheng.scrap”。其完全限定的资源名为“com.cheng.scrap.config”


  • 文件是否在类路径中?如果是,请尝试将其重命名为abc_en_US.properties

    加载本地化内容的属性文件也会受到包命名的影响。如果您将属性文件放在像
    org.example.com.foobar
    这样的包中,并仅按其名称
    abc
    加载它,您还必须添加前缀
    org.example.com.foobar
    。如果属性位于不同的位置(如根目录或其他子目录),则必须更改要加载的名称或类路径

    我将属性文件放置在
    .java
    文件所在的相同位置,并使用类似

    private static ResourceBundle RES = ResourceBundle.getBundle(NameOfTheCurrentClass.class.getCanonicalName());
    

    您只需要在获取文件时添加包名

    例如,如果包a.b.c中的属性名称为“ABC.properties”,那么下面的代码将非常有效

    ResourceBundle labels = ResourceBundle.getBundle("a.b.c.ABC");
    

    今天我遇到了同样的问题,我花了一段时间才找到了解决办法(我将Eclipse用作IDE)。我的项目文件夹包含以下路径中的*.properties文件:

    project/src/strings
    
    由于strings是src的子文件夹,并且src已经在项目的构建路径中(请参见属性窗口),所以我只需要为*.properties文件添加一个包含模式:

    **/*.properties
    
    *.java文件(**/*.java)应该已经有一个包含模式


    也许IDE也有类似的功能,只需将资源文件复制到类文件所在的位置即可

    就我而言,我的目录是:

    bin 
      - com 
         - brookf 
            - all my packages here. 
    

    将资源文件复制到bin文件夹

    您能确认文件在运行时是否在类路径中吗?可能提供您正在使用的代码和文件布局。我遇到了相同的错误,我的属性文件与类文件位于同一个包中,指定了与我一起使用的完全限定名(包名+属性文件名)