2015-05-04 39 views
0

我遇到了麻煩資源包爲「發現」我的.properties文件。這是一個Java庫項目,我打在我單位的誤差測試無法獲取ResourceBundle來查找包。我怎樣才能調試呢?

java.util.MissingResourceException:無法找到捆綁的基本名稱../strings,地方en_US 在java中。 util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1564) at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1387) at java.util.ResourceBundle.getBundle(ResourceBundle.java:773) at 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(StringResour在com.company.sdk.java.Tests.StringResourcesTest.testGetResources(StringResourcesTest.java:13)ces.java:28)

網上我發現,資源包看起來在類路徑中,默認情況下找到這些文件。

所以我設置一個斷點,並運行此命令找到它:。

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

和得到了這樣的結果:

/用戶/傑夫/ IdeaProjects/SDKparentFolder/CompanyJavaSDK /編譯/班/主/

現在,我的資源文件夾是在主,像這樣: 主/資源/ strings.properties

所以我覺得我應該能夠作出這樣的調用來獲取資源文件:

ResourceBundle.getBundle( 「資源/串」)

但我仍然得到同樣的例外。我想我必須缺少一些基本的東西。任何人有關於如何解決此問題的提示?

謝謝,

更新:這是我的目錄結構。

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

我試圖用我的包名稱設置爲「resources.strings」解決strings.properties文件,但我得到了同樣的錯誤。我也嘗試把它們放在[java]生成的源代碼路徑下,但它似乎沒有幫助。我現在使用建議的dot.separated.path名稱。 我也嘗試將它移動到com.company.sdk.java.resources下,但它仍然無法找到該文件。

回答

0

資源包名稱必須包含點而不是斜槓。這是因爲ResourceBundle可以是一個類(您自己編寫,以您自己的某種方式定義必需的字符串),也可以作爲PropertyResourceBundle實時「製造」。

這將有助於你在這兒讀的精確搜索描述: http://docs.oracle.com/javase/7/docs/api/java/util/ResourceBundle.html#getBundle(java.lang.String,%20java.util.Locale,%20java.lang.ClassLoader)

此外,要確保你通過名稱是相對於你的classpath的根目錄。它看起來像是com.company.sdk.java.resources.strings,但我無法確定你發佈的內容。

+0

謝謝傑裏的幫助,但我仍然遇到同樣的問題。我的問題中的'classpath'對你來說似乎是否正確?此外,我已將信息添加到問題的結尾。謝謝, – jeff

+0

糟糕。對不起,傑夫;剛注意到這個問題。無論如何,不​​,在資源下,製作一個類似於Java代碼的結構。 Maven(我假設你從這個結構中使用)會將所有這些東西推入生成的.jar,.war或其他任何東西中。所以你的屬性文件應該以com.company結尾,因此會是「com.company.strings」。 –