由于类加载器星座而导致MissingResourceException(调用者不在WEB-INF / classes中)

时间:2011-12-19 10:43:08

标签: java class loading resourcebundle

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

我正在尝试从位于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上运行,所以我想我必须记住Web服务器线程处理。

感谢您的帮助, 贡纳尔

1 个答案:

答案 0 :(得分:3)

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

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