diff --git a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java
index d72c494ce7..2970c60962 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java
@@ -28,6 +28,7 @@ import net.i2p.util.OrderedProperties;
import net.i2p.util.PortMapper;
import net.i2p.util.SecureDirectory;
import net.i2p.util.SecureFile;
+import net.i2p.util.SystemVersion;
import net.i2p.util.VersionComparator;
@@ -475,6 +476,15 @@ class PluginUpdateRunner extends UpdateRunner {
statusDone("" + _t("Plugin requires Jetty version {0} or lower", "8.9999") + "");
return;
}
+ if (SystemVersion.isJava9()) {
+ blacklistVersion = PluginStarter.java9Blacklist.get(appName);
+ if (blacklistVersion != null &&
+ VersionComparator.comp(version, blacklistVersion) <= 0) {
+ to.delete();
+ statusDone("" + _t("Plugin requires Java version {0} or lower", "8.9999") + "");
+ return;
+ }
+ }
maxVersion = PluginStarter.stripHTML(props, "max-jetty-version");
if (maxVersion != null &&
VersionComparator.comp(maxVersion, oldVersion) < 0) {
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java b/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java
index a0114bbad6..cf354d6820 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java
@@ -36,6 +36,7 @@ import net.i2p.util.I2PAppThread;
import net.i2p.util.Log;
import net.i2p.util.PortMapper;
import net.i2p.util.SimpleTimer2;
+import net.i2p.util.SystemVersion;
import net.i2p.util.Translate;
import net.i2p.util.VersionComparator;
@@ -78,12 +79,28 @@ public class PluginStarter implements Runnable {
public static final Map jetty9Blacklist;
static {
- Map map = new HashMap(4);
+ Map map = new HashMap(2);
map.put("i2pbote", "0.4.5");
map.put("BwSchedule", "0.0.36");
jetty9Blacklist = Collections.unmodifiableMap(map);
}
+ /**
+ * Plugin name to plugin version of plugins that do not work
+ * with Java 9+
+ * Unmodifiable.
+ *
+ * @since 0.9.30
+ */
+ public static final Map java9Blacklist;
+
+ static {
+ Map map = new HashMap(2);
+ map.put("01_neodatis", "2.1-2.14-209-17");
+ map.put("02_seedless", "0.1.7-0.1.12");
+ java9Blacklist = Collections.unmodifiableMap(map);
+ }
+
public PluginStarter(RouterContext ctx) {
_context = ctx;
}
@@ -362,6 +379,18 @@ public class PluginStarter implements Runnable {
throw new Exception(foo);
}
+ if (SystemVersion.isJava9()) {
+ blacklistVersion = java9Blacklist.get(appName);
+ if (blacklistVersion != null &&
+ VersionComparator.comp(curVersion, blacklistVersion) <= 0) {
+ String foo = "Plugin " + appName + " requires Jetty version 8.9999 or lower";
+ log.error(foo);
+ disablePlugin(appName);
+ foo = gettext("Plugin requires Java version {0} or lower", "8.9999", ctx);
+ throw new Exception(foo);
+ }
+ }
+
String maxVersion = stripHTML(props, "max-jetty-version");
if (maxVersion != null &&
VersionComparator.comp(maxVersion, jVersion) < 0) {
diff --git a/history.txt b/history.txt
index 20ba7b1649..a932c289f7 100644
--- a/history.txt
+++ b/history.txt
@@ -1,3 +1,6 @@
+2018-09-23 zzz
+ * Plugins: Blacklist neodatis and seedless for Java 9+ (ticket #2295)
+
2018-09-22 zzz
* NTCP:
- Fix handling of multiple connections
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index ba403a9f3e..ae4c8ac3a4 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 = 5;
+ public final static long BUILD = 6;
/** for example "-test" */
public final static String EXTRA = "-rc";