【问题标题】:MissingResourceException due to class loader constallation (caller not in WEB-INF/classes)MissingResourceException 由于类加载器配置(调用者不在 WEB-INF/类中)
【发布时间】:2011-12-19 10:43:08
【问题描述】:

访问资源包时出现 MissingResourceException。由于我的特定类加载器配置,问题出现了。

我正在尝试从位于 JBOSS_HOME/server/myServer/myDeployDir/myEAR/myJAR.jar 下的类中读取 text.properties(注意:调用类不在 WEB-INF/classes 中)。 text.properties 文件在这里 JBOSS_HOME/server/myServer/myDeployDir/myEAR/myWAR/WEB-INF/classes。

运行以下代码时:

Locale locale = new Locale ("de", "DE");
ResourceBundle rb = ResourceBundle.getBundle(textproperties, locale);

我得到以下内容

java.util.MissingResourceException: Can't find bundle for base name text, locale de_DE.

很遗憾,我不能更改我的应用程序的结构。我既不能将调用者类(现在在 myJAR.jar 中)移动到 WEB-INF/classes,也不能将属性文件打包到 myJAR.jar 中。有没有办法从 WEB-INF/classes 外部访问属性文件?

应用程序在 JBOSS 4.2.3 上运行,所以我想我必须牢记网络服务器线程处理。

提前感谢您的帮助, 贡纳尔

【问题讨论】:

    标签: java class loading resourcebundle


    【解决方案1】:

    您可以指定要用作getBundle 的附加参数的类加载器。在 Web 应用程序中,这很可能是当前线程的上下文类加载器:

    ClassLoader cl = Thread.currentThread().getContextClassLoader();
    ResourceBundle rb = ResourceBundle.getBundle(textproperties, locale, cl);
    

    【讨论】:

    • 您好,乔恩,感谢您的帮助。我现在可以访问属性文件了。
    猜你喜欢
    • 2018-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 2016-05-01
    • 2018-04-14
    • 1970-01-01
    • 2017-11-28
    相关资源
    最近更新 更多