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 761e5c8cf..a9b565c5a 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 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.