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.