Inconsistent missing property handling with java objects
mike.rettig at gmail.com
Wed Sep 3 14:13:11 UTC 2014
With nashorn, it seems that the assignment and accessing of missing
properties on java objects is handled as 'undefined'.
String engine = "nashorn";
ScriptEngineManager engineManager =
final ScriptEngine nashorn = engineManager.getEngineByName(engine);
nashorn.eval("var d=new java.util.Date();");
This will print 'undefined'. It doesn't fail on the 'badProp' on the Date
object. With Rhino, this would fail on the assignment of the bad property
with the following error:
"Exception in thread "main" javax.script.ScriptException:
"java.util.Date" has no public instance field or method named "badProp".
(<Unknown source>#1) in <Unknown source> at line number 1"
I want the script to fail when the bad property is referenced. I've tried
'use strict', the rhino compatibility script, and attempting to define
on the java object. I can create a wrapper object that simply delegates to
the java object and throws if a property is undefined, but that seems
Is this the correct behavior? Is there a way to work around this behavior
More information about the nashorn-dev