当前位置: 首页 > 面试题库 >

Mozilla Rhino:如何从Java调用JS函数

宰父疏珂
2023-03-14
问题内容

我正在使用Mozilla Rhino 1.7r2(不是JDK版本),并且想从Java调用JS函数。

我的JS函数是这样的:

function abc(x,y)
{
  return x+y
}

我该怎么做呢?

编辑:(JS函数在单独的文件中)


问题答案:

String script = “function abc(x,y) {return x+y;}”;
Context context = Context.enter();
try {
ScriptableObject scope = context.initStandardObjects();
Scriptable that = context.newObject(scope);
Function fct = context.compileFunction(scope, script, “script”, 1, null);
Object result = fct.call(
context, scope, that, new Object[] {2, 3});
System.out.println(Context.jsToJava(result, int.class));
} finally {
Context.exit();
}


更新:将函数以及其他函数和变量一起加载到范围中时

String script = "function abc(x,y) {return x+y;}"
        + "function def(u,v) {return u-v;}";
Context context = Context.enter();
try {
    ScriptableObject scope = context.initStandardObjects();
    context.evaluateString(scope, script, "script", 1, null);
    Function fct = (Function)scope.get("abc", scope);
    Object result = fct.call(
            context, scope, scope, new Object[] {2, 3});
    System.out.println(Context.jsToJava(result, int.class));
} finally {
    Context.exit();
}


 类似资料:
  • 问题内容: 我正在使用Mozilla Rhino 1.7r2(不是JDK版本),并且想从Java调用JS函数。 我的JS函数是这样的: 我该怎么做呢? 编辑:(JS函数在单独的文件中) 问题答案: String script = “function abc(x,y) {return x+y;}”; Context context = Context.enter(); try { Scriptabl

  • 问题内容: 我需要从Java调用C#函数,为此,我创建了以下代码。我有一个创建的Java头文件Authenticator.h,代码如下: 然后,我创建了一个身份验证的C#函数 然后,我尝试使用以下代码从C ++(项目创建dll)中调用C#函数; 最后创建一个需要从Java调用的dll。该dll已创建,并且可以在Java中很好地加载它,但是在Java中却收到此错误日志。我可能会错过什么。 问题答案:

  • 问题内容: 如何从C ++应用程序调用Java函数? 我知道从CMD(或类似技术)调用它们的方法,但我宁愿不使用它们。 问题答案: 例如,检查从C创建JVM。它显示了创建JVM和调用方法的示例过程。如果JVM已经存在;例如,您的C程序被Java程序调用(回调情况),则可以缓存JNIEnv *指针。 作为建议,请小心从C / C ++缓存指向JVM的指针,其中涉及到一些有关可以缓存的内容的语义,以后

  • 问题内容: 我试图从我的JavaScript代码中调用Python中的函数。我使用了此处说明的代码,但对我不起作用。 这是我的JS代码: Python代码: 你知道这是怎么回事吗? 问题答案: 除了上述要点之外,并假设您已经具有适当的设置来服务您的python脚本并返回响应。您应该提交一个异步请求,尤其是在python代码进行大量计算的情况下。 如果您只进行少量计算,而使用从jQuery 1.8开

  • 问题内容: 我很清楚如何用C ++扩展Python,但是如果我想用Java编写要与numpy一起使用的函数怎么办? 这是一个简单的场景:我想使用Java类来计算numpy数组的平均值。如何将numpy向量传递给Java类并收集结果? 谢谢你的帮助! 问题答案: 我花了一些时间回答自己的问题,并希望分享我的答案,因为我觉得关于 stackoverflow的 这个主题的信息不多。我还认为,由于Java

  • 问题内容: 是否可以从Javascript调用Java(GWT)方法?从文档中也不清楚。http://code.google.com/intl/zh- CN/webtoolkit/doc/latest/DevGuideCodingBasicsJSNI.html上的 所有示例都演示了如何从JSNI(而非JS)函数调用Java函数。 更新1 这是一个Java代码: 这是html中的呼叫者按钮示例: 这