diff --git a/core/api/src/main/java/org/onosproject/ui/lion/LionBundle.java b/core/api/src/main/java/org/onosproject/ui/lion/LionBundle.java
index 1e1a6e4..9f4fae4 100644
--- a/core/api/src/main/java/org/onosproject/ui/lion/LionBundle.java
+++ b/core/api/src/main/java/org/onosproject/ui/lion/LionBundle.java
@@ -84,6 +84,15 @@
         return mapped.get(key);
     }
 
+    /**
+     * Dump the contents of the bundle.
+     *
+     * @return dumped contents
+     */
+    public String dump() {
+        return mapped.toString();
+    }
+
     // === --------------------------------------------------------------------
 
     /**
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/lion/BundleStitcher.java b/web/gui/src/main/java/org/onosproject/ui/impl/lion/BundleStitcher.java
index a6fc390..b6671b8 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/lion/BundleStitcher.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/lion/BundleStitcher.java
@@ -19,12 +19,12 @@
 
 import com.google.common.collect.ImmutableList;
 import org.onosproject.ui.lion.LionBundle;
-import org.onosproject.ui.lion.LionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Locale;
 import java.util.MissingResourceException;
 import java.util.ResourceBundle;
 import java.util.Set;
@@ -94,14 +94,19 @@
     private boolean addItemsToBuilder(LionBundle.Builder builder,
                                       LionConfig.CmdFrom from) {
         String resBundleName = base + SLASH + from.res();
-        String resFqbn = convertToFqbn(resBundleName);
+        String fqbn = convertToFqbn(resBundleName);
         ResourceBundle bundle = null;
         boolean ok = true;
 
         try {
-            bundle = LionUtils.getBundledResource(resFqbn);
+            // NOTE: have to be explicit about the locale and class-loader
+            //       for this to work under Karaf, apparently...
+            Locale locale = Locale.getDefault();
+            ClassLoader classLoader = getClass().getClassLoader();
+            bundle = ResourceBundle.getBundle(fqbn, locale, classLoader);
+
         } catch (MissingResourceException e) {
-            log.warn("Cannot find resource bundle: {}", resFqbn);
+            log.warn("Cannot find resource bundle: {}", fqbn);
             log.debug("BOOM!", e);
             ok = false;
         }
@@ -174,6 +179,7 @@
                 LionBundle lion = stitcher.stitch(tag);
                 bundles.add(lion);
                 log.info("Generated LION bundle: {}", lion);
+                log.debug(" Dumped: {}", lion.dump());
 
             } catch (IllegalArgumentException e) {
                 log.warn("Unable to generate bundle: {} / {}", base, tag);
