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 就此给出提示。
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 就此给出提示。