Index: /trunk/src/org/openstreetmap/josm/gui/preferences/remotecontrol/RemoteControlPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/remotecontrol/RemoteControlPreference.java	(revision 12702)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/remotecontrol/RemoteControlPreference.java	(revision 12703)
@@ -172,11 +172,12 @@
         ActionListener remoteControlEnabled = e -> {
             GuiHelper.setEnabledRec(wrapper, enableRemoteControl.isSelected());
+            enableHttpsSupport.setEnabled(RemoteControl.supportsHttps());
             // 'setEnabled(false)' does not work for JLabel with html text, so do it manually
             // FIXME: use QuadStateCheckBox to make checkboxes unset when disabled
             if (installCertificate != null && uninstallCertificate != null) {
                 // Install certificate button is enabled if HTTPS is also enabled
-                installCertificate.setEnabled(enableRemoteControl.isSelected() && enableHttpsSupport.isSelected());
+                installCertificate.setEnabled(enableRemoteControl.isSelected() && enableHttpsSupport.isSelected() && RemoteControl.supportsHttps());
                 // Uninstall certificate button is always enabled
-                uninstallCertificate.setEnabled(true);
+                uninstallCertificate.setEnabled(RemoteControl.supportsHttps());
             }
         };
Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/RemoteControl.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/RemoteControl.java	(revision 12702)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/RemoteControl.java	(revision 12703)
@@ -11,4 +11,5 @@
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.io.remotecontrol.handler.RequestHandler;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
@@ -47,5 +48,7 @@
     public static void start() {
         RemoteControlHttpServer.restartRemoteControlHttpServer();
-        RemoteControlHttpsServer.restartRemoteControlHttpsServer();
+        if (supportsHttps()) {
+            RemoteControlHttpsServer.restartRemoteControlHttpsServer();
+        }
     }
 
@@ -56,5 +59,21 @@
     public static void stop() {
         RemoteControlHttpServer.stopRemoteControlHttpServer();
-        RemoteControlHttpsServer.stopRemoteControlHttpsServer();
+        if (supportsHttps()) {
+            RemoteControlHttpsServer.stopRemoteControlHttpsServer();
+        }
+    }
+
+    /**
+     * Determines if the current JVM support HTTPS remote control.
+     * @return {@code true} if the JVM provides {@code sun.security.x509} classes
+     * @since 12703
+     */
+    public static boolean supportsHttps() {
+        try {
+            return Class.forName("sun.security.x509.GeneralName") != null;
+        } catch (ClassNotFoundException e) {
+            Logging.trace(e);
+            return false;
+        }
     }
 
Index: /trunk/src/org/openstreetmap/josm/tools/Utils.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 12702)
+++ /trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 12703)
@@ -1632,4 +1632,7 @@
         int firstDotPos = version.indexOf('.');
         int lastDotPos = version.lastIndexOf('.');
+        if (firstDotPos == lastDotPos) {
+            return 0;
+        }
         return firstDotPos > - 1 ? Integer.parseInt(version.substring(firstDotPos + 1,
                 lastDotPos > -1 ? lastDotPos : version.length())) : 0;
@@ -1645,5 +1648,10 @@
         int bPos = version.indexOf('b');
         int pPos = version.indexOf('+');
-        return Integer.parseInt(version.substring(bPos > -1 ? bPos + 1 : pPos + 1, version.length()));
+        try {
+            return Integer.parseInt(version.substring(bPos > -1 ? bPos + 1 : pPos + 1, version.length()));
+        } catch (NumberFormatException e) {
+            Logging.trace(e);
+            return 0;
+        }
     }
 
Index: /trunk/test/unit/org/openstreetmap/josm/tools/UtilsTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/tools/UtilsTest.java	(revision 12702)
+++ /trunk/test/unit/org/openstreetmap/josm/tools/UtilsTest.java	(revision 12703)
@@ -225,4 +225,7 @@
         String javaVersion = System.getProperty("java.version");
         try {
+            System.setProperty("java.version", "1.8.0");
+            assertEquals(0, Utils.getJavaUpdate());
+
             System.setProperty("java.version", "1.8.0_131");
             assertEquals(131, Utils.getJavaUpdate());
@@ -265,4 +268,9 @@
             System.setProperty("java.runtime.version", "9.1.2+62");
             assertEquals(62, Utils.getJavaBuild());
+
+            // IBM version example
+            System.setProperty("java.runtime.version", "pwa6480sr4fp7-20170627_02 (SR4 FP7)");
+            assertEquals(0, Utils.getJavaBuild());
+
         } finally {
             System.setProperty("java.runtime.version", javaVersion);
