java - 为什么我会收到 MissingResourceException

标签 java resourcebundle

为什么这会抛出 MissingResourceException ?是我弄错了还是不是 ListResourceBundles 的重点是在代码中提供资源?

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)

最佳答案

当您遇到错误并尝试了解原因时,第一步是始终读取错误的堆栈跟踪。在这种情况下,堆栈跟踪是

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 文件中。按照错误消息的提示将其公开,问题就会消失。

关于java - 为什么我会收到 MissingResourceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45741033/

相关文章:

java - PropertiesConfiguration 和 PropertyResourceBundle 在 Windows 和 Linux 上的行为不同

java - 如何从文件加载资源包,而不是从jar,相同的包基本名称

java - 运行在 1.6 JVM 上的 Jetty 无法运行在 Java 1.6 上编译的 webapp

java - Java程序的执行从哪一行开始?它是主要方法吗?

java - 类型参数 T 不在类型变量 T 的范围内(Java 泛型)

java - 获取系统语言并与ResourceBundle一起使用

java - 如何使用 Java 每 24 小时将数据从 MySQL 中的一列移动到另一列?

java - 将 HTTP POST 从 curl (PHP) 转换为 HttpURLConnection (Java)

java - 使用 ReloadableResourceBundleMessageSource 在类路径上动态加载文件

java - 当默认区域设置为 "en"时,ReloadableResourceBundleMessageSource 无法找到消息