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 df2f854a76..d1690212e0 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java
@@ -1,7 +1,6 @@
package net.i2p.router.web;
import java.io.File;
-import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -88,6 +87,15 @@ public class ConfigClientsHandler extends FormHandler {
} else {
try {
PluginStarter.stopPlugin(_context, app);
+ } catch (ClassNotFoundException cnfe) {
+ // don't complain here. Some plugins need to be ran to be deleted.
+ // I tried to check to see if the plugin was ran elsewhere,
+ // and it sait it was when it was not. -- Sponge
+ } catch (Throwable e) {
+ addFormError(_("Error stopping plugin {0}", app) + ": " + e);
+ _log.error("Error stopping plugin " + app, e);
+ }
+ try {
PluginStarter.deletePlugin(_context, app);
addFormNotice(_("Deleted plugin {0}", app));
} catch (Throwable e) {
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/PluginUpdateHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/PluginUpdateHandler.java
index f225f5fe46..59a960bb52 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/PluginUpdateHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/PluginUpdateHandler.java
@@ -122,7 +122,7 @@ public class PluginUpdateHandler extends UpdateHandler {
protected void update() {
_updated = false;
if(_xpi2pURL.startsWith("file://")) {
- updateStatus("" + _("Attempting to copy plugin from {0}", _xpi2pURL) + "");
+ updateStatus("" + _("Attempting to install from file {0}", _xpi2pURL) + "");
// strip off "file://"
String xpi2pfile = _xpi2pURL.substring(7);
if(xpi2pfile.length() == 0) { // This is actually what String.isEmpty() does, so it should be safe.
@@ -133,7 +133,7 @@ public class PluginUpdateHandler extends UpdateHandler {
if(FileUtil.copy((new File(xpi2pfile)).getAbsolutePath(), _updateFile, true, false)) {
transferComplete(alreadyTransferred, alreadyTransferred, 0L, _xpi2pURL, _updateFile, false);
} else {
- statusDone("" + _("Failed to copy file {0}", _xpi2pURL) + "");
+ statusDone("" + _("Failed to install from file {0}, copy failed.", _xpi2pURL) + "");
}
}
} else {
diff --git a/history.txt b/history.txt
index 658d0add4a..3e2bcbca76 100644
--- a/history.txt
+++ b/history.txt
@@ -1,3 +1,6 @@
+2012-03-19 sponge
+ * Plugins: less confusing message, fix CNFE by catch and ignore on delete.
+
2012-03-17 zzz
* BuildHandler: Implement restart and shutdown to stop the thread
* Jetty: Don't extract wars
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index 8ab24107c9..80cfb9c849 100644
--- a/router/java/src/net/i2p/router/RouterVersion.java
+++ b/router/java/src/net/i2p/router/RouterVersion.java
@@ -18,7 +18,7 @@ public class RouterVersion {
/** deprecated */
public final static String ID = "Monotone";
public final static String VERSION = CoreVersion.VERSION;
- public final static long BUILD = 17;
+ public final static long BUILD = 18;
/** for example "-test" */
public final static String EXTRA = "";