FXML Scripting and Nashorn Error Messages

Jim Laskey (Oracle) james.laskey at oracle.com
Wed Jul 17 10:42:11 PDT 2013


Going to forward to the fx experts.


On 2013-07-17, at 1:55 PM, TA Hubbard <tahubbard at fxmlguide.com> wrote:

> Dear Sirs;
> 
> A fundamental feature of JavaFX's FXML is scripting.  The process is simple; add the <?language javascript?> 'processing instruction' to standard FXML processing instructions (JavaFX import declarations or statements) then script.
> 
> As you know, some of the scripting languages include JavaScript, JavaFX, and DSL's such as Groovy, Clojure, etc.
> 
> Unfortunately, since build JDK8_91, if the above language processing instruction is included within an FXML document, Nashorn produces FXMLLoader _null pointer error_ messages during compilation with NetBeans (Windows Vista).  Since JDK8_97, if nashorn.jar is manually included as a separate library within the application, no null pointer error messages are produced but we should not have to include a separate jar for FXML scripting.
> 
> On the other hand, with the nashorn.jar manually included, the following sample button from Oracle's 'Introduction To FXML', works just fine:
> 
> <Button text="Click Me!" onAction="java.lang.System.out.println('You clicked me!');"/>
> This prints "You clicked me!" to the console.
> 
> However, use of the <fx:script> tag to run a second sample from 'Introduction To FXML' produces multiple error messages:
> <fx:script>
>    importClass(java.lang.System);
>    function handleButtonAction(event) {
>       System.out.println('You clicked me!');
>    }
> </fx:script>
> <Button text="Run JavaScript function by clicking" onAction="handleButtonAction(event);"/>
> 
> The first error message produced is on JavaFX's own 'importClass' method, as follows:
> ReferenceError: "importClass" is not defined in <eval> at line number 2 ... (I have found no reference where importClass has been deprecated)
> 
> A second error message begins with the following:
> Caused by: javax.script.ScriptException: ReferenceError: "handleButtonAction" is not defined in <eval> at line number 1 at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:426) ...
> 
> Finally, doing a simple JavaFX object method call within FXML produces error messages on the following:
> <Button fx:id="vanish" text="This button should vanish" />
> <Button text="Press to remove the above button" onAction="vanish.setVisible(false)"/>
> 
> One error message begins like this:
> Caused by: javax.script.ScriptException: ReferenceError: "vanish" is not defined in <eval> at line number 1 at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:426) ...
> 
> I hope you can restore these capabilities soon with Nashorn since they are central to advanced FXML scripting, and since they apparently worked well with the other JavaFX JavaScript engine.  I was instructed to do a Jira on this, but I will wait your response first.
> 
> Thank you.
> 
> TAH
> 
> 
> 



More information about the openjfx-dev mailing list