Index: trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 14185)
+++ trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 14186)
@@ -636,4 +636,12 @@
     }
 
+    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.",
+                        plugin, Integer.toString(requiredVersion), Utils.getJavaVersion()
+                ));
+    }
+
     private static void alertJOSMUpdateRequired(Component parent, String plugin, int requiredVersion) {
         HelpAwareOptionPane.showOptionDialog(
@@ -651,5 +659,5 @@
     /**
      * Checks whether all preconditions for loading the plugin <code>plugin</code> are met. The
-     * current JOSM version must be compatible with the plugin and no other plugins this plugin
+     * current Java and JOSM versions must be compatible with the plugin and no other plugins this plugin
      * depends on should be missing.
      *
@@ -661,6 +669,12 @@
     public static boolean checkLoadPreconditions(Component parent, Collection<PluginInformation> plugins, PluginInformation plugin) {
 
+        // 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 openjfx plugin does not trigger a popup
+            logJavaUpdateRequired(plugin.name, plugin.localminjavaversion);
+            return false;
+        }
+
         // make sure the plugin is compatible with the current JOSM version
-        //
         int josmVersion = Version.getInstance().getVersion();
         if (plugin.localmainversion > josmVersion && josmVersion != Version.JOSM_UNKNOWN_VERSION) {
Index: trunk/src/org/openstreetmap/josm/plugins/PluginInformation.java
===================================================================
--- trunk/src/org/openstreetmap/josm/plugins/PluginInformation.java	(revision 14185)
+++ trunk/src/org/openstreetmap/josm/plugins/PluginInformation.java	(revision 14186)
@@ -50,4 +50,8 @@
     /** The lowest JOSM version required by this plugin (from locally available jar). **/
     public int localmainversion;
+    /** The lowest Java version required by this plugin (from plugin list). **/
+    public int minjavaversion;
+    /** The lowest Java version required by this plugin (from locally available jar). **/
+    public int localminjavaversion;
     /** The plugin class name. */
     public String className;
@@ -162,4 +166,5 @@
     public void updateFromPluginSite(PluginInformation other) {
         this.mainversion = other.mainversion;
+        this.minjavaversion = other.minjavaversion;
         this.className = other.className;
         this.requires = other.requires;
@@ -237,7 +242,17 @@
             } catch (NumberFormatException e) {
                 Logging.warn(tr("Invalid plugin main version ''{0}'' in plugin {1}", s, name));
+                Logging.trace(e);
             }
         } else {
             Logging.warn(tr("Missing plugin main version in plugin {0}", name));
+        }
+        s = attr.getValue("Minimum-Java-Version");
+        if (s != null) {
+            try {
+                minjavaversion = Integer.parseInt(s);
+            } catch (NumberFormatException e) {
+                Logging.warn(tr("Invalid Java version ''{0}'' in plugin {1}", s, name));
+                Logging.trace(e);
+            }
         }
         author = attr.getValue("Author");
@@ -543,6 +558,8 @@
 
     /**
-     * Updates the local fields ({@link #localversion}, {@link #localmainversion}, {@link #localrequires})
-     * to values contained in the up-to-date fields ({@link #version}, {@link #mainversion}, {@link #requires})
+     * Updates the local fields
+     * ({@link #localversion}, {@link #localmainversion}, {@link #localminjavaversion}, {@link #localrequires})
+     * to values contained in the up-to-date fields
+     * ({@link #version}, {@link #mainversion}, {@link #minjavaversion}, {@link #requires})
      * of the given PluginInformation.
      * @param info The plugin information to get the data from.
@@ -553,4 +570,5 @@
             this.localversion = info.version;
             this.localmainversion = info.mainversion;
+            this.localminjavaversion = info.minjavaversion;
             this.localrequires = info.requires;
         }
