Index: trunk/src/org/openstreetmap/josm/data/validation/tests/OpeningHourTest.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/OpeningHourTest.java	(revision 13330)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/OpeningHourTest.java	(revision 13331)
@@ -12,5 +12,4 @@
 import javax.script.Invocable;
 import javax.script.ScriptEngine;
-import javax.script.ScriptEngineManager;
 import javax.script.ScriptException;
 
@@ -23,4 +22,5 @@
 import org.openstreetmap.josm.tools.LanguageInfo;
 import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -36,5 +36,5 @@
      * Javascript engine
      */
-    public static final ScriptEngine ENGINE = new ScriptEngineManager(null).getEngineByName("JavaScript");
+    public static final ScriptEngine ENGINE = Utils.getJavaScriptEngine();
 
     /**
Index: trunk/src/org/openstreetmap/josm/gui/download/OverpassQueryWizardDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/download/OverpassQueryWizardDialog.java	(revision 13330)
+++ trunk/src/org/openstreetmap/josm/gui/download/OverpassQueryWizardDialog.java	(revision 13331)
@@ -144,8 +144,6 @@
     private Optional<String> tryParseSearchTerm(String searchTerm) {
         try {
-            String query = this.overpassQueryBuilder.constructQuery(searchTerm);
-
-            return Optional.of(query);
-        } catch (UncheckedParseException ex) {
+            return Optional.of(overpassQueryBuilder.constructQuery(searchTerm));
+        } catch (UncheckedParseException | IllegalStateException ex) {
             Logging.error(ex);
             JOptionPane.showMessageDialog(
@@ -158,5 +156,4 @@
                     JOptionPane.ERROR_MESSAGE
             );
-
             return Optional.empty();
         }
Index: trunk/src/org/openstreetmap/josm/gui/io/CustomConfigurator.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/CustomConfigurator.java	(revision 13330)
+++ trunk/src/org/openstreetmap/josm/gui/io/CustomConfigurator.java	(revision 13331)
@@ -26,5 +26,4 @@
 
 import javax.script.ScriptEngine;
-import javax.script.ScriptEngineManager;
 import javax.script.ScriptException;
 import javax.swing.JOptionPane;
@@ -421,5 +420,8 @@
                 this.mainPrefs = mainPrefs;
                 PreferencesUtils.resetLog();
-                engine = new ScriptEngineManager(null).getEngineByName("JavaScript");
+                engine = Utils.getJavaScriptEngine();
+                if (engine == null) {
+                    throw new ScriptException("Failed to retrieve JavaScript engine");
+                }
                 engine.eval("API={}; API.pref={}; API.fragments={};");
 
Index: trunk/src/org/openstreetmap/josm/tools/OverpassTurboQueryWizard.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/OverpassTurboQueryWizard.java	(revision 13330)
+++ trunk/src/org/openstreetmap/josm/tools/OverpassTurboQueryWizard.java	(revision 13331)
@@ -7,5 +7,4 @@
 import javax.script.Invocable;
 import javax.script.ScriptEngine;
-import javax.script.ScriptEngineManager;
 import javax.script.ScriptException;
 
@@ -22,5 +21,5 @@
 
     private static OverpassTurboQueryWizard instance;
-    private final ScriptEngine engine = new ScriptEngineManager(null).getEngineByName("JavaScript");
+    private final ScriptEngine engine = Utils.getJavaScriptEngine();
 
     /**
@@ -37,19 +36,18 @@
 
     private OverpassTurboQueryWizard() {
-        if (engine == null) {
-            throw new IllegalStateException("Failed to retrieve JavaScript engine");
-        }
         try (CachedFile file = new CachedFile("resource://data/overpass-wizard.js");
              Reader reader = file.getContentReader()) {
-            engine.eval("var console = {error: " + Logging.class.getCanonicalName() + ".warn};");
-            engine.eval("var global = {};");
-            engine.eval(reader);
-            engine.eval("var overpassWizard = function(query) {" +
-                    "  return global.overpassWizard(query, {" +
-                    "    comment: false," +
-                    "    outputFormat: 'xml'," +
-                    "    outputMode: 'recursive_meta'" +
-                    "  });" +
-                    "}");
+            if (engine != null) {
+                engine.eval("var console = {error: " + Logging.class.getCanonicalName() + ".warn};");
+                engine.eval("var global = {};");
+                engine.eval(reader);
+                engine.eval("var overpassWizard = function(query) {" +
+                        "  return global.overpassWizard(query, {" +
+                        "    comment: false," +
+                        "    outputFormat: 'xml'," +
+                        "    outputMode: 'recursive_meta'" +
+                        "  });" +
+                        "}");
+            }
         } catch (ScriptException | IOException ex) {
             throw new IllegalStateException("Failed to initialize OverpassTurboQueryWizard", ex);
@@ -64,4 +62,7 @@
      */
     public String constructQuery(String search) {
+        if (engine == null) {
+            throw new IllegalStateException("Failed to retrieve JavaScript engine");
+        }
         try {
             final Object result = ((Invocable) engine).invokeFunction("overpassWizard", search);
Index: trunk/src/org/openstreetmap/josm/tools/Utils.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 13330)
+++ trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 13331)
@@ -61,4 +61,6 @@
 import java.util.zip.ZipFile;
 
+import javax.script.ScriptEngine;
+import javax.script.ScriptEngineManager;
 import javax.xml.XMLConstants;
 import javax.xml.parsers.DocumentBuilder;
@@ -1720,3 +1722,17 @@
     }
 
+    /**
+     * Returns JRE JavaScript Engine (Nashorn by default), if any.
+     * Catches and logs SecurityException and return null in case of error.
+     * @return JavaScript Engine, or null.
+     * @since 13301
+     */
+    public static ScriptEngine getJavaScriptEngine() {
+        try {
+            return new ScriptEngineManager(null).getEngineByName("JavaScript");
+        } catch (SecurityException e) {
+            Logging.error(e);
+            return null;
+        }
+    }
 }
