为Rhino的shell开发的一些JavaScript文件使用load()来加载其他JavaScript文件。我正在尝试使用javax.script从这些Rhino JavaScript文件中嵌入一些功能。不幸的是,javax.script的JavaScript没有实现load()函数。尝试eval()包含load()的脚本时,会发生以下错误:
com.sun.script.javascript.RhinoScriptEngine:-1:in `eval': javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "load" is not defined.
从Java程序(而不是shell)中评估JavaScript文件时,javax.script是否为load()函数提供了一个?
答案 0 :(得分:1)
加载功能很老。在Rhino的最新RC(RC3)中,有一个commonJS module加载器实现。
您必须切换到Rhino的嵌入式版本。创建脚本上下文后,可以安装require函数。
因此,如果您加载文件'./math.js'
将成为var math = require('math');
。使用模块的URI创建模块提供程序后。