Index: trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 18787)
+++ trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 18790)
@@ -78,4 +78,6 @@
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.OpenBrowser;
+import org.openstreetmap.josm.tools.PlatformManager;
 import org.openstreetmap.josm.tools.ResourceProvider;
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
@@ -646,10 +648,30 @@
     }
 
-    private static void logJavaUpdateRequired(String plugin, int requiredVersion) {
-        Logging.warn(
-                tr("Plugin {0} requires Java version {1}. The current Java version is {2}. "
-                        +"You have to update Java in order to use this plugin.",
+    private static void alertJavaUpdateRequired(Component parent, String plugin, int requiredVersion) {
+        final ButtonSpec[] options = new ButtonSpec[] {
+                new ButtonSpec(tr("OK"), ImageProvider.get("ok"), tr("Click to close the dialog"), null),
+                new ButtonSpec(tr("Update Java"), ImageProvider.get("java"), tr("Update Java"), null)
+        };
+        final int selected = HelpAwareOptionPane.showOptionDialog(
+                parent,
+                "<html>" + tr("Plugin {0} requires Java version {1}. The current Java version is {2}.<br>"
+                                + "You have to update Java in order to use this plugin.",
                         plugin, Integer.toString(requiredVersion), Utils.getJavaVersion()
-                ));
+                ) + "</html>",
+                tr("Warning"),
+                JOptionPane.WARNING_MESSAGE,
+                null,
+                options,
+                options[0],
+                null
+        );
+        if (selected == 1) {
+            if (Utils.isRunningJavaWebStart()) {
+                OpenBrowser.displayUrl(Config.getPref().get("openwebstart.download.url", "https://openwebstart.com/download/"));
+            } else if (!Utils.isRunningWebStart()) {
+                final String javaUrl = PlatformManager.getPlatform().getJavaUrl();
+                OpenBrowser.displayUrl(javaUrl);
+            }
+        }
     }
 
@@ -663,5 +685,5 @@
                 tr("Warning"),
                 JOptionPane.WARNING_MESSAGE,
-                ht("/Plugin/Loading#JOSMUpdateRequired")
+                null
         );
     }
@@ -688,6 +710,5 @@
         // make sure the plugin is compatible with the current Java version
         if (plugin.localminjavaversion > Utils.getJavaVersion()) {
-            // Just log a warning until we switch to Java 11 so that javafx plugin does not trigger a popup
-            logJavaUpdateRequired(plugin.name, plugin.localminjavaversion);
+            alertJavaUpdateRequired(parent, plugin.name, plugin.localminjavaversion);
             return false;
         }
Index: trunk/src/org/openstreetmap/josm/tools/PlatformHook.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/PlatformHook.java	(revision 18787)
+++ trunk/src/org/openstreetmap/josm/tools/PlatformHook.java	(revision 18790)
@@ -313,8 +313,6 @@
      */
     default void warnSoonToBeUnsupportedJava(JavaExpirationCallback callback) {
-        // Java 11 is our next minimum version, and OpenWebStart should be replacing Oracle WebStart
-        // We'd go to 17, but some Linux distributions (Debian) default to Java 11.
-        // And OpenWebStart currently doesn't have Java 17 JREs.
-        if (Utils.getJavaVersion() < 11 && !Utils.isRunningWebStart()) {
+        // Java 17 is our next minimum version, and OpenWebStart should be replacing Oracle WebStart
+        if (Utils.getJavaVersion() < 17 && !Utils.isRunningWebStart()) {
             String latestVersion = Utils.getJavaLatestVersion();
             String currentVersion = Utils.getSystemProperty("java.version");
@@ -334,5 +332,5 @@
      */
     default String getJavaUrl() {
-        StringBuilder defaultDownloadUrl = new StringBuilder("https://www.azul.com/downloads/?version=java-17-lts&package=jre-fx");
+        StringBuilder defaultDownloadUrl = new StringBuilder("https://www.azul.com/downloads/?version=java-17-lts");
         if (PlatformManager.isPlatformWindows()) {
             defaultDownloadUrl.append("&os=windows");
@@ -348,14 +346,14 @@
             if ("x86_64".equals(osArch) || "amd64".equals(osArch)
                     || "AMD64".equalsIgnoreCase(System.getenv("PROCESSOR_ARCHITEW6432"))) {
-                defaultDownloadUrl.append("&architecture=x86-64-bit");
+                defaultDownloadUrl.append("&architecture=x86-64-bit").append("&package=jdk-fx"); // jdk-fx has an installer
             } else if ("aarch64".equals(osArch)) {
-                defaultDownloadUrl.append("&architecture=arm-64-bit");
+                defaultDownloadUrl.append("&architecture=arm-64-bit").append("&package=jdk-fx"); // jdk-fx has an installer
             } else if ("x86".equals(osArch)) {
                 // Honestly, just about everyone should be on x86_64 at this point. But just in case someone
                 // is running JOSM on a 10-year-old computer. They'd probably be better off running a RPi.
-                defaultDownloadUrl.append("&architecture=x86-32-bit");
+                defaultDownloadUrl.append("&architecture=x86-32-bit").append("&package=jdk"); // jdk has an installer
             } // else user will have to figure it out themselves.
         }
-        defaultDownloadUrl.append("#download-openjdk"); // Scrolls to download section
+        defaultDownloadUrl.append("#zulu"); // Scrolls to download section
         return defaultDownloadUrl.toString();
     }
