diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java
index b216ed3ff684a388514cf3bab15fdcf4a7588b7c..7928ca791fc45a537de64b18f3bf4e95144f5fbd 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java
@@ -386,7 +386,7 @@ public class ConfigClientsHandler extends FormHandler {
                         WebAppStarter.startWebApp(_context, s, app, path.getAbsolutePath());
                         addFormNoticeNoEscape(_t("WebApp") + " <a href=\"/" + app + "/\">" + _t(app) + "</a> " + _t("started") + '.');
                     } catch (Throwable e) {
-                        addFormError(_t("Failed to start") + ' ' + _t(app) + " " + e + '.');
+                        addFormError(_t("Failed to start") + ' ' + _t(app) + ": " + e);
                         _log.error("Failed to start webapp " + app, e);
                     }
                     return;
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java b/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java
index 18250d3a2dbac5b38fc2e1d4119a39a798d7786e..4455945e83f99ce71626bd6c9f9d4f1b4903061e 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java
@@ -48,7 +48,9 @@ public class WebAppStarter {
 
 
     /**
-     *  adds and starts
+     *  Adds and starts.
+     *  Prior to 0.9.28, was not guaranteed to throw on failure.
+     *
      *  @throws just about anything, caller would be wise to catch Throwable
      */
     static void startWebApp(RouterContext ctx, ContextHandlerCollection server,
@@ -57,6 +59,9 @@ public class WebAppStarter {
          WebAppContext wac = addWebApp(ctx, server, appName, warPath, tmpdir);      
          //_log.debug("Loading war from: " + warPath);
          LocaleWebAppHandler.setInitParams(wac, INIT_PARAMS);
+         // default false, set to true so we get good logging,
+         // and the caller will know it failed
+         wac.setThrowUnavailableOnStartupException(true);
          wac.start();
     }