diff --git a/shell/src/main/java/org/apache/felix/shell/impl/ExportsCommandImpl.java b/shell/src/main/java/org/apache/felix/shell/impl/ExportsCommandImpl.java
index 8db20eb..9637c6e 100644
--- a/shell/src/main/java/org/apache/felix/shell/impl/ExportsCommandImpl.java
+++ b/shell/src/main/java/org/apache/felix/shell/impl/ExportsCommandImpl.java
@@ -78,13 +78,20 @@
                 {
                     long l = Long.parseLong(id);
                     Bundle bundle = m_context.getBundle(l);
-                    ExportedPackage[] exports = pa.getExportedPackages(bundle);
-                    if (separatorNeeded)
+                    if (bundle != null)
                     {
-                        out.println("");
+                        ExportedPackage[] exports = pa.getExportedPackages(bundle);
+                        if (separatorNeeded)
+                        {
+                            out.println("");
+                        }
+                        printExports(out, bundle, exports);
+                        separatorNeeded = true;
                     }
-                    printExports(out, bundle, exports);
-                    separatorNeeded = true;
+                    else
+                    {
+                        err.println("Bundle ID " + id + " is invalid.");
+                    }
                 }
                 catch (NumberFormatException ex)
                 {
diff --git a/shell/src/main/java/org/apache/felix/shell/impl/RequirersCommandImpl.java b/shell/src/main/java/org/apache/felix/shell/impl/RequirersCommandImpl.java
index 42107ff..d21a404 100644
--- a/shell/src/main/java/org/apache/felix/shell/impl/RequirersCommandImpl.java
+++ b/shell/src/main/java/org/apache/felix/shell/impl/RequirersCommandImpl.java
@@ -78,19 +78,26 @@
                 {
                     long l = Long.parseLong(id);
                     Bundle bundle = m_context.getBundle(l);
-                    RequiredBundle[] rbs = pa.getRequiredBundles(bundle.getSymbolicName());
-                    for (int i = 0; (rbs != null) && (i < rbs.length); i++)
+                    if (bundle != null)
                     {
-                        if (rbs[i].getBundle() == bundle)
+                        RequiredBundle[] rbs = pa.getRequiredBundles(bundle.getSymbolicName());
+                        for (int i = 0; (rbs != null) && (i < rbs.length); i++)
                         {
-                            if (separatorNeeded)
+                            if (rbs[i].getBundle() == bundle)
                             {
-                                out.println("");
+                                if (separatorNeeded)
+                                {
+                                    out.println("");
+                                }
+                                printRequiredBundles(out, bundle, rbs[i].getRequiringBundles());
+                                separatorNeeded = true;
                             }
-                            printRequiredBundles(out, bundle, rbs[i].getRequiringBundles());
-                            separatorNeeded = true;
                         }
                     }
+                    else
+                    {
+                        err.println("Bundle ID " + id + " is invalid.");
+                    }
                 }
                 catch (NumberFormatException ex)
                 {
