FXMLLoader no reconoce la <?language javascript?>
directiva cuando intenta procesar un script fxml (ver más abajo). El mensaje de error es "Idioma de página no especificado". Mi fxml es el siguiente (código real omitido por brevedad):
<?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/>
Investigué un poco y descubrí que la ScriptEngineManager
clase de javafx en realidad no ve ningún motor de secuencias de comandos. En particular, en su getEngineByName
método, la colección de ScriptEngineFactory
está vacía, por lo que no encuentra ningún motor javascript y lanza la excepción más adelante. No entraré en detalles sobre esto ya que el objetivo no es depurar el código fuente de javafx, pero pensé que podría ser útil como sugerencia.
¿Tiene alguna idea de por qué no se reconoce la directiva del lenguaje de secuencias de comandos aunque el fxml y todo lo demás está escrito correctamente?
Por supuesto, debe incluir la implementación del motor de secuencias de comandos en su pom...
<dependency>
<groupId>org.openjdk.nashorn</groudId>
<artifactId>nashorn-core</artifactId>
<version>15.0</version>
</dependency>
Gracias a @Pointy y @James_D por darnos una pista al respecto.
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras