diff --git a/runner/pom.xml b/runner/pom.xml
index 2e030ce..ad9f005 100644
--- a/runner/pom.xml
+++ b/runner/pom.xml
@@ -41,6 +41,12 @@
       <artifactId>jclouds-blobstore</artifactId>
       <version>${project.parent.version}</version>
     </dependency>
+    
+    <dependency>
+      <groupId>org.apache.jclouds.karaf</groupId>
+      <artifactId>commands</artifactId>
+      <version>${project.parent.version}</version>
+    </dependency>
 
     <dependency>
       <groupId>org.apache.jclouds</groupId>
diff --git a/runner/src/main/java/org/jclouds/cli/runner/Main.java b/runner/src/main/java/org/jclouds/cli/runner/Main.java
index efc5cbf..c2dde3e 100644
--- a/runner/src/main/java/org/jclouds/cli/runner/Main.java
+++ b/runner/src/main/java/org/jclouds/cli/runner/Main.java
@@ -36,6 +36,8 @@
 import java.util.List;
 import java.util.concurrent.TimeoutException;
 
+import javax.script.ScriptEngineManager;
+
 import jline.Terminal;
 
 import org.apache.felix.gogo.commands.Action;
@@ -54,6 +56,9 @@
 import org.fusesource.jansi.AnsiConsole;
 import org.jclouds.blobstore.ContainerNotFoundException;
 import org.jclouds.blobstore.KeyNotFoundException;
+import org.jclouds.karaf.commands.compute.ComputeCommandBase;
+import org.jclouds.karaf.commands.table.BasicShellTableFactory;
+import org.jclouds.karaf.commands.table.ShellTableFactory;
 import org.jclouds.rest.AuthorizationException;
 import org.jclouds.rest.InsufficientResourcesException;
 import org.jclouds.rest.ResourceAlreadyExistsException;
@@ -344,7 +349,17 @@
                         @Override
                         public Action createNewAction() {
                             try {
-                                return ((Class<? extends Action>) actionClass).newInstance();
+                               Action action = ((Class< ? extends Action>) actionClass).newInstance();
+                               if (action instanceof ComputeCommandBase) {
+                                   ShellTableFactory shellTableFactory = ((ComputeCommandBase) action).getShellTableFactory();
+                                   if (shellTableFactory instanceof BasicShellTableFactory) {
+                                       BasicShellTableFactory factory = (BasicShellTableFactory) shellTableFactory;
+                                       if (factory.getScriptEngineManager() == null) {
+                                           factory.setScriptEngineManager(new ScriptEngineManager());
+                                       }
+                                   }
+                               }
+                               return action;
                             } catch (InstantiationException e) {
                                 throw new RuntimeException(e);
                             } catch (IllegalAccessException e) {
