2017-08-17 77 views
0

爲什麼會拋出MissingResourceException?我錯了還是不是 ListResourceBundles的目的是提供代碼中的資源?爲什麼我會得到MissingResourceException

public class Hello extends Thread { 

    public static void main(String[] args) { 

     ResourceBundle resBundle = ResourceBundle.getBundle("ResourceBundle", new Locale("it", "IT", "")); 
     System.out.println(resBundle.getObject(new Integer(1).toString())); 
    } 


} 
在一個單獨的文件

public class ResourceBundle_it_IT extends ListResourceBundle { 

    public Object[][] getContents() { 
     return contents; 
    } 
    static final Object[][] contents = { 
     {"1", "Uno"}, 
     {"2", "Duo"}, 
     {"3", "Trie"},}; 

} 

我的錯誤:

run: 
Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name ResourceBundle, locale it_IT 
    at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1564) 
    at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1387) 
    at java.util.ResourceBundle.getBundle(ResourceBundle.java:845) 
    at hello.Hello.main(Hello.java:21) 
/home/maxbisesi/.cache/netbeans/8.1/executor-snippets/run.xml:53: Java returned: 1 
BUILD FAILED (total time: 0 seconds) 

回答

3

當你得到一個錯誤,並試圖瞭解原因,第一步是總是到讀取錯誤的堆棧跟蹤。在這種情況下,堆棧跟蹤是

Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name ResourceBundle, locale it_IT 
    at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1564) 
    at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1387) 
    at java.util.ResourceBundle.getBundle(ResourceBundle.java:845) 
    at Hello.main(Hello.java:9) 
Caused by: java.lang.IllegalAccessException: Class java.util.ResourceBundle$Control can not access a member of class ResourceBundle_it_IT with modifiers "" 
    at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:102) 
    at java.lang.Class.newInstance(Class.java:436) 
    at java.util.ResourceBundle$Control.newBundle(ResourceBundle.java:2645) 
    at java.util.ResourceBundle.loadBundle(ResourceBundle.java:1501) 
    at java.util.ResourceBundle.findBundle(ResourceBundle.java:1465) 
    at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1361) 
    ... 2 more 

如果你讀它,這個問題變得很明顯:

Class java.util.ResourceBundle$Control can not access a member of class ResourceBundle_it_IT with modifiers ""

移動類ResourceBundle_it_IT其onwn文件,它屬於。如錯誤消息所示,將其公開,問題就會消失。

+0

奇怪,那不是我得到的錯誤 – madmax

+0

我把Bundle作爲公共類移動到它自己的文件中,仍然會得到相同的錯誤? – madmax

+0

ResourceBundle_it_IT類的包是什麼? –