diff --git a/apps/routerconsole/java/src/net/i2p/router/update/NewsFetcher.java b/apps/routerconsole/java/src/net/i2p/router/update/NewsFetcher.java index 076aed8cbd..80e774df7b 100644 --- a/apps/routerconsole/java/src/net/i2p/router/update/NewsFetcher.java +++ b/apps/routerconsole/java/src/net/i2p/router/update/NewsFetcher.java @@ -264,8 +264,8 @@ class NewsFetcher extends UpdateRunner { } String minJava = args.get(MIN_JAVA_VERSION_KEY); if (minJava != null) { - String ourJava = System.getProperty("java.version"); - if (VersionComparator.comp(ourJava, minJava) < 0) { + if (!SystemVersion.isJava(minJava)) { + String ourJava = System.getProperty("java.version"); String msg = _mgr._t("Requires Java version {0} but installed Java version is {1}", minJava, ourJava); _log.logAlways(Log.WARN, "Cannot update to version " + ver + ": " + msg); _mgr.notifyVersionConstraint(this, _currentURI, ROUTER_SIGNED, "", ver, msg); 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 ddbcfc4988..fbfd9bf5d6 100644 --- a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java @@ -409,8 +409,7 @@ class PluginUpdateRunner extends UpdateRunner { } minVersion = PluginStarter.stripHTML(props, "min-java-version"); - if (minVersion != null && - VersionComparator.comp(System.getProperty("java.version"), minVersion) < 0) { + if (minVersion != null && !SystemVersion.isJava(minVersion)) { to.delete(); statusDone("" + _t("This plugin requires Java version {0} or higher", minVersion) + ""); return; 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 11b1c4a790..1d2f66d9d2 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java @@ -358,8 +358,7 @@ public class PluginStarter implements Runnable { } minVersion = stripHTML(props, "min-java-version"); - if (minVersion != null && - VersionComparator.comp(System.getProperty("java.version"), minVersion) < 0) { + if (minVersion != null && !SystemVersion.isJava(minVersion)) { String foo = "Plugin " + appName + " requires Java version " + minVersion + " or higher"; log.error(foo); disablePlugin(appName); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java index 5fcd47b89f..a6309f1431 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -340,13 +340,13 @@ public class RouterConsoleRunner implements RouterApp { /** @since 0.9.17 */ private void checkJavaVersion() { - boolean noJava7 = !SystemVersion.isJava7(); + boolean noJava8 = !SystemVersion.isJava8(); boolean noPack200 = (PluginStarter.pluginsEnabled(_context) || !NewsHelper.isUpdateDisabled(_context)) && !FileUtil.isPack200Supported(); boolean openARM = SystemVersion.isARM() && SystemVersion.isOpenJDK() && !SystemVersion.isJava9(); boolean isZero = SystemVersion.isZeroVM(); boolean isJava11 = false; // SystemVersion.isJava11(); - if (noJava7 || noPack200 || openARM || isZero || isJava11) { + if (noJava8 || noPack200 || openARM || isZero || isJava11) { String s = "Java version: " + System.getProperty("java.version") + " OS: " + System.getProperty("os.name") + ' ' + System.getProperty("os.arch") + ' ' + @@ -354,8 +354,8 @@ public class RouterConsoleRunner implements RouterApp { net.i2p.util.Log log = _context.logManager().getLog(RouterConsoleRunner.class); log.logAlways(net.i2p.util.Log.WARN, s); System.out.println("Warning: " + s); - if (noJava7) { - s = "Java 7 is now required, please upgrade"; + if (noJava8) { + s = "Java 8 or higher will be required in a future release, please upgrade Java"; log.logAlways(net.i2p.util.Log.WARN, s); System.out.println("Warning: " + s); } diff --git a/core/java/src/net/i2p/util/SystemVersion.java b/core/java/src/net/i2p/util/SystemVersion.java index dfe9a065eb..79504e5e88 100644 --- a/core/java/src/net/i2p/util/SystemVersion.java +++ b/core/java/src/net/i2p/util/SystemVersion.java @@ -243,6 +243,40 @@ public abstract class SystemVersion { return _oneDotEleven; } + /** + * Handles Android also + * + * @param minVersion e.g. 11 + * @return true if greater than or equal to minVersion + * @since 0.9.41 + */ + public static boolean isJava(int minVersion) { + return isJava("1." + minVersion); + } + + /** + * Handles Android, and minVersions in both forms (e.g. 11 or 1.11) + * + * @param minVersion either 1.x or x form works + * @return true if greater than or equal to minVersion + * @since 0.9.41 + */ + public static boolean isJava(String minVersion) { + String version = System.getProperty("java.version"); + if (!version.startsWith("1.")) + version = "1." + version; + if (!minVersion.startsWith("1.")) + minVersion = "1." + minVersion; + if (_isAndroid) { + if (minVersion.startsWith("1.6")) + return _oneDotSix; + if (minVersion.startsWith("1.7")) + return _oneDotSeven; + return false; + } + return VersionComparator.comp(version, minVersion) >= 0; + } + /** * This isn't always correct. * http://stackoverflow.com/questions/807263/how-do-i-detect-which-kind-of-jre-is-installed-32bit-vs-64bit @@ -342,6 +376,7 @@ public abstract class SystemVersion { System.out.println("Java 9 : " + isJava9()); System.out.println("Java 10 : " + isJava10()); System.out.println("Java 11 : " + isJava11()); + System.out.println("Java 12 : " + isJava(12)); System.out.println("Android : " + isAndroid()); if (isAndroid()) System.out.println(" Version: " + getAndroidVersion());