<?language javascript?>FXMLLoader在尝试处理 fxml 脚本时无法识别该指令(见下文)。错误消息是“未指定页面语言”。我的 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/>
Run Code Online (Sandbox Code Playgroud)
我调查了一下,发现ScriptEngineManagerjavafx 类实际上没有看到任何脚本引擎。特别是,在它的getEngineByName方法中,集合ScriptEngineFactory是空的,所以它没有找到任何JavaScript引擎,并在稍后抛出异常。我不会详细介绍这一点,因为目标不是调试 javafx 源代码,但我认为它作为提示可能很有用。
您是否知道为什么尽管 fxml 和其他所有内容都已正确编写,但脚本语言指令未被识别?