小编Lan*_*nce的帖子

在OSGi包中加载ResourceBundle

我有一个使用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)

java osgi resourcebundle

5
推荐指数
1
解决办法
2857
查看次数

标签 统计

java ×1

osgi ×1

resourcebundle ×1