Index: trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java	(revision 15739)
+++ trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java	(revision 15740)
@@ -71,13 +71,4 @@
     }
 
-    private static boolean isRunningJavaWebStart() {
-        try {
-            // See http://stackoverflow.com/a/16200769/2257172
-            return Class.forName("javax.jnlp.ServiceManager") != null;
-        } catch (ClassNotFoundException e) {
-            return false;
-        }
-    }
-
     /**
      * Replies the report header (software and system info)
@@ -129,5 +120,5 @@
             }
             // Add WebStart package details if run from JNLP
-            if (isRunningJavaWebStart()) {
+            if (Utils.isRunningJavaWebStart()) {
                 String webStartDetails = platform.getWebStartPackageDetails();
                 if (webStartDetails != null) {
Index: trunk/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java	(revision 15739)
+++ trunk/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java	(revision 15740)
@@ -302,5 +302,5 @@
 
             Logging.debug("JCS - starting HttpClient GET request for URL: {0}", getUrl());
-            final HttpClient request = getRequest("GET", true);
+            final HttpClient request = getRequest("GET");
 
             if (isObjectLoadable() &&
@@ -487,5 +487,5 @@
     }
 
-    private HttpClient getRequest(String requestMethod, boolean noCache) throws IOException {
+    private HttpClient getRequest(String requestMethod) throws IOException {
         final HttpClient urlConn = HttpClient.create(getUrl(), requestMethod);
         urlConn.setAccept("text/html, image/png, image/jpeg, image/gif, */*");
@@ -496,12 +496,15 @@
         }
 
-        if (force || noCache) {
-            urlConn.useCache(false);
-        }
+        final boolean noCache = force
+                // To remove when switching to Java 11
+                // Workaround for https://bugs.openjdk.java.net/browse/JDK-8146450
+                || (Utils.getJavaVersion() == 8 && Utils.isRunningJavaWebStart());
+        urlConn.useCache(!noCache);
+
         return urlConn;
     }
 
     private boolean isCacheValidUsingHead() throws IOException {
-        final HttpClient.Response urlConn = getRequest("HEAD", false).connect();
+        final HttpClient.Response urlConn = getRequest("HEAD").connect();
         long lastModified = urlConn.getLastModified();
         boolean ret = (attributes.getEtag() != null && attributes.getEtag().equals(urlConn.getHeaderField("ETag"))) ||
Index: trunk/src/org/openstreetmap/josm/tools/Utils.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 15739)
+++ trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 15740)
@@ -1801,4 +1801,18 @@
 
     /**
+     * Determines whether JOSM has been started via Java Web Start.
+     * @return true if JOSM has been started via Java Web Start
+     * @since 15740
+     */
+    public static boolean isRunningJavaWebStart() {
+        try {
+            // See http://stackoverflow.com/a/16200769/2257172
+            return Class.forName("javax.jnlp.ServiceManager") != null;
+        } catch (ClassNotFoundException e) {
+            return false;
+        }
+    }
+
+    /**
      * Get a function that converts an object to a singleton stream of a certain
      * class (or null if the object cannot be cast to that class).
