我有一个使用java.util.ResourceBundle来处理显示字符串的应用程序.我使用ListResourceBundle作为基类型,因为我希望能够返回一些属性键的字符串数组(大多数是标准名称/值配对).
当我尝试在OSGi环境中加载ResourceBundle时,我得到一个MissingResourceException.我无法弄清楚为什么会这样.在尝试获取包之前,我可以解析类名并在两个语句中创建类的新实例,因此我知道类在包中.我正在使用区域设置(en_AU)但没有为该区域设置提供特定的类,回退规则应该选择我的默认实现.即使我为语言环境添加了一个类,它也没有解析.
我获取数据的过程是:
服务
public interface NameManager {
public String getCategoryName(String identifier, Locale locale);
}
Run Code Online (Sandbox Code Playgroud)
这个的实现
public class OsgiNameManager implements NameManager {
public String getCategoryName(@Nonnull Identifier category, Locale locale)
{
try {
Collection<ServiceReference> references = (Collection)osgiContext.getServiceReferences(
DisplayNameProvider.class, "(namespace=" + category + ")");
Iterator<ServiceReference> it = references.iterator();
while ( it.hasNext() ) {
ServiceReference reference = (ServiceReference)it.next();
DisplayNameProvider namer = (DisplayNameProvider)osgiContext.getService(reference);
String name = namer.getCategoryName(category, locale);
osgiContext.ungetService(reference);
if (name != null)
return name;
}
}
catch (InvalidSyntaxException badFormat) {
LOG.warn("No registered provider …Run Code Online (Sandbox Code Playgroud)