Tag: javax.script

如何在Java中指定自己的Rhino上下文?

我正在努力确保我的Rhino脚本(在Java 6下运行)是严格的,这样如果脚本开发人员拼错了表达式,我希望抛出exception。 目前发生的事情是表达式简单地评估为“未定义”。 现在根据Mozilla org https://developer.mozilla.org/en/New_in_Rhino_1.6R6,有一些function可以在上下文中启用严格检查。 我找不到一个有效的例子。 到目前为止我所做的是编写一个类来扩展ContextFactory然后覆盖hasFeature方法。 public class ScriptContextFactory extends ContextFactory { protected boolean hasFeature(Context context, int featureIndex) { switch (featureIndex) { case Context.FEATURE_STRICT_EVAL: return true; case Context.FEATURE_STRICT_VARS: return true; } return super.hasFeature(context, featureIndex); } } 然后在Main我将我的设置为默认值。 ContextFactory.initGlobal(new ScriptContextFactory()); 我得到一个非法的州例外。 🙁 关于这是如何工作的任何想法或样本? TIA

我可以为Java6 Rhino脚本引擎中运行的javascript创建一个“窗口”对象

我想在我的Java6服务器上运行一些Javascript – 即使用javax.script API,特别是Rhino脚本引擎。 (虽然可以接受另一种解决方案) 脚本文件由第三方创建和支持,因此我不想下载并编辑它以防它随时间发生变化。 该脚本直接引用了Rhino似乎不支持的’window’对象(可能还有’document’对象等)。 我可以这样做,如果是这样,怎么样?

尝试使用Rhino,getEngineByName(“JavaScript”)在OpenJDK 7中返回null

当我运行下面的代码时,当我使用OpenJDK 7( java-7-openjdk-i386 )时, engine变量被设置为null 。 import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class TestRhino { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ScriptEngineManager factory = new ScriptEngineManager(); ScriptEngine engine = factory.getEngineByName(“JavaScript”); try { System.out.println(engine.eval(“1+1”)); } catch (ScriptException e) { // TODO Auto-generated catch block e.printStackTrace(); […]