我无法让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下移动它,但它仍然无法找到该文件。
答案 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
,但我无法确定您发布的内容。