javafx fxml:未指定页面语言 - JavaScript 似乎不受支持

javafx fxml: page language not specified - JavaScript seems not to be supported

FXMLLoader 在尝试处理 fxml 脚本时无法识别 <?language javascript?> 指令(见下文)。错误消息是“未指定页面语言”。我的 fxml 如下(为简洁起见省略了实际代码):

<?language javascript?>

<!-- differnet includes -->
...

<!-- actual fxml -->
<StackPane xmlns="http://javafx.com/javafx"
           xmlns:fx="http://javafx.com/fxml"
           fx:controller="com.xxx.xxx.MainViewController"
           prefWidth="1200">

...

    <!-- somewhere in the middle of the fxml code -->
    <fx:script>
        function clearTool1() {
            tool1.setValue(null);
        }
    </fx:script>

...

<StackPane/>

我调查了一下,发现javafx的ScriptEngineManager class居然没有看到任何脚本引擎。特别是,在它的 getEngineByName 方法中, ScriptEngineFactory 的集合是空的,所以它没有找到任何 javascript 引擎并稍后抛出异常。我不会对此进行详细介绍,因为目标不是调试 javafx 源代码,但我认为它可以用作提示。

您知道为什么尽管 fxml 和其他所有内容都正确编写,但脚本语言指令仍无法识别吗?

当然,您必须将脚本引擎实现包含到您的 pom 中...

<dependency>
    <groupId>org.openjdk.nashorn</groudId>
    <artifactId>nashorn-core</artifactId>
    <version>15.0</version>
</dependency>

感谢@Pointy 和@James_D 就此给出提示。