【发布时间】:2018-04-10 19:31:24
【问题描述】:
我们在 Wildfly 上遇到了奇怪的问题(尽管它也发生在 Tomcat 上)。 在新的战争部署之后,我能够找到资源包文件,但是在执行一些代码(不确定是什么)之后,wildfly 无法使用 URLClassLoader 加载 ResourceBundle 文件。似乎是 ClassLoader 问题,但不确定。 我们如何确定它的罪魁祸首? 这是用于获取 ResourceBundle 的代码:
Locale locale = Locale.getDefault();
java.io.File fileObj = new java.io.File(bundleName);
java.net.URL resourceURL = null;
try {
resourceURL = fileObj.getParentFile().toURI().toURL();
} catch (MalformedURLException e) {
e.printStackTrace();
}
URLClassLoader urlLoader = new URLClassLoader(
new java.net.URL[] {
resourceURL
});
java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle(
bundleName.substring(
bundleName.lastIndexOf(File.separator) + 1,
bundleName.lastIndexOf(".")), locale, urlLoader);
try {
msg = bundle.getString(bundleMsg);
} catch (Exception e) {
e.printStackTrace();
}
return msg;
【问题讨论】:
-
资源包在哪里?以及您的查找代码在哪里?什么是部署?战争?
-
资源包是war文件的一部分,但不在“WEB-INF”中。查找的代码在 WEB-INF/classes 文件夹内。
-
战争文件在哪里?
-
结构如下: - "query/resource_bundle" 与 "WEB-INF" 平行
标签: java wildfly urlclassloader