This is an automated email from the ASF dual-hosted git repository.

bodewig pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ant.git

commit 08a6e42fb42396d998ffe0f7ba9f03158823d480
Author: Stefan Bodewig <bode...@apache.org>
AuthorDate: Mon Aug 10 18:27:50 2020 +0200

    log an error message if no JavaScript engine can be found in Java 15+
---
 .../tools/ant/util/optional/JavaxScriptRunner.java      | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/src/main/org/apache/tools/ant/util/optional/JavaxScriptRunner.java 
b/src/main/org/apache/tools/ant/util/optional/JavaxScriptRunner.java
index 761e5c8..a9b565c 100644
--- a/src/main/org/apache/tools/ant/util/optional/JavaxScriptRunner.java
+++ b/src/main/org/apache/tools/ant/util/optional/JavaxScriptRunner.java
@@ -18,6 +18,8 @@
 
 package org.apache.tools.ant.util.optional;
 
+import java.util.Arrays;
+import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.function.BiConsumer;
@@ -34,6 +36,7 @@ import javax.script.SimpleBindings;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.MagicNames;
 import org.apache.tools.ant.Project;
+import org.apache.tools.ant.util.JavaEnvUtils;
 import org.apache.tools.ant.util.ScriptRunnerBase;
 
 /**
@@ -192,6 +195,14 @@ public class JavaxScriptRunner extends ScriptRunnerBase {
         }
         ScriptEngine result =
             new ScriptEngineManager().getEngineByName(getLanguage());
+        if (result == null && JavaEnvUtils.isAtLeastJavaVersion("15")
+            && languageIsJavaScript()) {
+            getProject()
+                .log("Java 15 has removed Nashorn, you must provide an engine "
+                     + "for running JavaScript yourself. "
+                     + "GraalVM JavaScript currently is the preferred option.",
+                     Project.MSG_WARN);
+        }
         maybeApplyGraalJsProperties(result);
         if (result != null && getKeepEngine()) {
             this.keptEngine = result;
@@ -208,6 +219,12 @@ public class JavaxScriptRunner extends ScriptRunnerBase {
         }
     }
 
+    private final static List<String> JS_LANGUAGES = Arrays.asList("js", 
"javascript");
+
+    private boolean languageIsJavaScript() {
+        return JS_LANGUAGES.contains(getLanguage());
+    }
+
     /**
      * Traverse a Throwable's cause(s) and return the BuildException
      * most deeply nested into it - if any.

Reply via email to