Index: src/org/openstreetmap/josm/plugins/javafx/JavaFxPlugin.java
===================================================================
--- src/org/openstreetmap/josm/plugins/javafx/JavaFxPlugin.java	(revision 35370)
+++ src/org/openstreetmap/josm/plugins/javafx/JavaFxPlugin.java	(working copy)
@@ -1,5 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.plugins.javafx;
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.io.File;
 import java.io.IOException;
@@ -14,6 +15,8 @@
 import java.nio.file.StandardCopyOption;
 import java.nio.file.attribute.BasicFileAttributes;
 import java.security.CodeSource;
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.Enumeration;
 import java.util.List;
 import java.util.Objects;
@@ -21,29 +24,50 @@
 import java.util.zip.ZipFile;
 
 import org.openstreetmap.josm.data.Preferences;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.io.audio.AudioPlayer;
 import org.openstreetmap.josm.plugins.DynamicURLClassLoader;
 import org.openstreetmap.josm.plugins.Plugin;
+import org.openstreetmap.josm.plugins.PluginHandler;
 import org.openstreetmap.josm.plugins.PluginInformation;
 import org.openstreetmap.josm.plugins.javafx.io.audio.JavaFxMediaPlayer;
 import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.Utils;
 
+
 /**
  * OpenJFX plugin brings OpenJFX (JavaFX) to other plugins.
  */
 abstract class JavaFxPlugin extends Plugin {
 
+    Exception e;
     /**
      * Constructs a new {@code OpenJfxPlugin}.
      * @param info plugin info
      * @param ext native libraries extension
-     * @param orderedNativeLibraries native librarires that must be loaded in this order
+     * @param orderedNativeLibraries native libraries that must be loaded in this order
      */
     protected JavaFxPlugin(PluginInformation info, String ext, List<String> orderedNativeLibraries) {
         super(info);
+        boolean isJavaFx = Utils.getSystemProperty("javafx.runtime.version") != null || Arrays.asList("Oracle Corporation").contains(Utils.getSystemProperty("java.vendor"));
+        if (!isJavaFx && Utils.getJavaVersion() >= 10) {
+            extractNativeLibs(ext);
+            loadNativeLibs(ext, orderedNativeLibraries);
+        } else if (!isJavaFx) {
+            Logging.error("JavaFX is not available");
+            StringBuilder message = new StringBuilder(tr("JavaFX is not available."));
+            String os = Utils.getSystemProperty("os.name").toLowerCase();
+            if (Arrays.asList("windows", "mac os").contains(os)) {
+                message.append(tr(" Please install OpenJFX through your package manager."));
+            } else {
+                message.append(tr(" Please update to Java 11."));
+            }
+            if (PluginHandler.confirmDisablePlugin(MainApplication.getMainFrame(), message.toString(), info.getName())) {
+                PluginHandler.removePlugins(Collections.singletonList(info));
+            }
+            return;
+        }
         AudioPlayer.setSoundPlayerClass(JavaFxMediaPlayer.class);
-        extractNativeLibs(ext);
-        loadNativeLibs(ext, orderedNativeLibraries);
     }
 
     private static void extractNativeLibs(String ext) {
Index: src/org/openstreetmap/josm/plugins/javafx/JavaFxPluginOsx.java
===================================================================
--- src/org/openstreetmap/josm/plugins/javafx/JavaFxPluginOsx.java	(revision 35370)
+++ src/org/openstreetmap/josm/plugins/javafx/JavaFxPluginOsx.java	(working copy)
@@ -3,6 +3,8 @@
 
 import java.util.Arrays;
 
+import javax.swing.UnsupportedLookAndFeelException;
+
 import org.openstreetmap.josm.plugins.PluginInformation;
 
 /**
@@ -13,8 +15,9 @@
     /**
      * Constructs a new {@code JavaFxPluginOsx}.
      * @param info plugin info
+     * @throws UnsupportedLookAndFeelException if JavaFX is not available (< Java 10)
      */
-    public JavaFxPluginOsx(PluginInformation info) {
+    public JavaFxPluginOsx(PluginInformation info) throws UnsupportedLookAndFeelException {
         super(info, ".dylib", Arrays.asList());
     }
 }
Index: src/org/openstreetmap/josm/plugins/javafx/JavaFxPluginUnixoid.java
===================================================================
--- src/org/openstreetmap/josm/plugins/javafx/JavaFxPluginUnixoid.java	(revision 35370)
+++ src/org/openstreetmap/josm/plugins/javafx/JavaFxPluginUnixoid.java	(working copy)
@@ -3,6 +3,8 @@
 
 import java.util.Arrays;
 
+import javax.swing.UnsupportedLookAndFeelException;
+
 import org.openstreetmap.josm.plugins.PluginInformation;
 
 /**
@@ -13,8 +15,9 @@
     /**
      * Constructs a new {@code JavaFxPluginUnixoid}.
      * @param info plugin info
+     * @throws UnsupportedLookAndFeelException if JavaFX is not available (< Java 10)
      */
-    public JavaFxPluginUnixoid(PluginInformation info) {
+    public JavaFxPluginUnixoid(PluginInformation info) throws UnsupportedLookAndFeelException {
         super(info, ".so", Arrays.asList());
     }
 }
Index: src/org/openstreetmap/josm/plugins/javafx/JavaFxPluginWindows.java
===================================================================
--- src/org/openstreetmap/josm/plugins/javafx/JavaFxPluginWindows.java	(revision 35370)
+++ src/org/openstreetmap/josm/plugins/javafx/JavaFxPluginWindows.java	(working copy)
@@ -3,6 +3,8 @@
 
 import java.util.Arrays;
 
+import javax.swing.UnsupportedLookAndFeelException;
+
 import org.openstreetmap.josm.plugins.PluginInformation;
 
 /**
@@ -13,8 +15,9 @@
     /**
      * Constructs a new {@code JavaFxPluginWindows}.
      * @param info plugin info
+     * @throws UnsupportedLookAndFeelException if JavaFX is not available (< Java 10)
      */
-    public JavaFxPluginWindows(PluginInformation info) {
+    public JavaFxPluginWindows(PluginInformation info) throws UnsupportedLookAndFeelException {
         super(info, ".dll", Arrays.asList("fxplugins.dll"));
     }
 }
