无法让ResourceBundle找到捆绑包。我该怎么调试呢?

时间:2015-05-04 22:30:00

标签: java debugging resourcebundle

我无法让ResourceBundle找到'我的.properties文件。这是在Java库项目中,我在单元测试中遇到了错误

  

java.util.MissingResourceException:无法找到基本名称的套装../strings,locale en_US       at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1564)       在java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1387)       在java.util.ResourceBundle.getBundle(ResourceBundle.java:773)       在com.company.sdk.java.resources.StringResources。(StringResources.java:23)       在com.company.sdk.java.resources.StringResources.getInstance(StringResources.java:34)       在com.company.sdk.java.resources.StringResources.getResource(StringResources.java:28)       在com.company.sdk.java.Tests.StringResourcesTest.testGetResources(StringResourcesTest.java:13)

在线我发现ResourceBundle在类路径中查找默认情况下查找这些文件。

所以我设置了一个断点并运行此命令来找到它:

  

的getClass()。getProtectionDomain()。getCodeSource()。的getLocation()。的getPath()

得到了这个结果:

  

/用户/杰夫/ IdeaProjects / SDKparentFolder / CompanyJavaSDK /建造/类/主/

现在,我的资源文件夹位于main下,如下所示: 主/资源/ strings.properties

所以我认为我应该可以通过这样的调用来获取资源文件:

  

ResourceBundle.getBundle("资源/串&#34)

但我仍然得到同样的例外。我想我必须遗漏一些基本的东西。有人知道我如何解决这个问题?

谢谢,

更新:这是我的目录结构。

[src]
  [main]
    [java] <- this folder is the 'generated source root in intellij
      [com]
        [company]
    [resources]
      (strings.properties)

我尝试通过将我的包名称设置为&#34; resources.strings&#34;来解决strings.properties文件。但我得到了同样的错误。我也尝试将它们放在[java]生成的源路由下,但它似乎没有帮助。我现在使用dot.separated.path名称作为建议。 我也试过在com.company.sdk.java.resources下移动它,但它仍然无法找到该文件。

1 个答案:

答案 0 :(得分:0)

资源包名称必须包含点,而不是斜杠。这是因为ResourceBundle可以是一个类(您自己编写,以您自己的某种方式定义必要的字符串),或者它可以是&#34;制造&#34;在财产上作为PropertyResourceBundle。

在此处阅读确切的搜索说明会对您有所帮助: http://docs.oracle.com/javase/7/docs/api/java/util/ResourceBundle.html#getBundle(java.lang.String,%20java.util.Locale,%20java.lang.ClassLoader)

此外,请确保您传递的名称相对于类路径的根目录。它看起来像是com.company.sdk.java.resources.strings,但我无法确定您发布的内容。