首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Rhino调用Java函数

从Rhino调用Java函数
EN

Stack Overflow用户
提问于 2016-09-29 13:04:39
回答 1查看 2.9K关注 0票数 3

从Java调用运行在Rhino内部的Javascript函数非常容易--这毕竟就是创建Rhino的原因。我很难确定的是:

  • Context:我有一个Phonegap (v6.3.3) Android项目(API 19+),在该项目中,我通过运行在犀牛内部的可加载JavaScript进行大量处理。
  • 我正在创建的Phonegap插件与实际的Phonegap应用程序同时包含一个名为Storage的类,它提供公共、静态、readFromFile(String fileName)writeToFile(String fileName,String data)等方法。
  • 我想要做的是从我在Rhino中加载的JavaScript代码中调用JavaScript等。

我不太清楚该如何做到这一点。从我到目前为止所做的搜索中,涉及到使用ScriptableObject.putProperty将所涉及的Java类传递给JavaScript,在我的例子中是Storage。然而,应该如何做到这一点,然后如何在JS端使用它,这让我感到非常困惑。

我非常感谢在座的任何人,他们可能会为我指明正确的方向。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-30 08:02:30

考虑到犀牛在这里的关注者还不到100人,这个问题没有得到回答也许就不足为奇了。同时,我自己找到了解决方案,结果非常简单。我在下面分享它,是为了让其他人都能碰到这个线程。

我的Storage类非常简单。就像这样

代码语言:javascript
运行
复制
public class Storage
{
 public static boolean haveFile(){}
 public static boolean readFromFile(String fname){}
 ...
} 

当我通过Rhino从Java调用Javascript时,我只是传递一个Storage类的新实例作为我的最后一个函数参数

代码语言:javascript
运行
复制
Context rhino = Context.enter();
Object[] functionParams = new Object[] {"Other parameters",new Storage()};
rhino.setOptimizationLevel(-1);
try 
{
 Scriptable scope = rhino.initStandardObjects();
 String rhinoLog = "var log = Packages.io.vec.ScriptAPI.log;";
 String code = /*Javascript code here* as shown separately below/;
 rhino.evaluateString(scope, rhinoLog + code, "ScriptAPI", 1, null);
 Function function = (Function) scope.get("jsFunction", scope);
 Object jsResult = function.call(rhino,scope,scope,functionParams);
}

其中Javascript代码是

代码语言:javascript
运行
复制
function jsFunction(a,s)
{
 //a - or a,b,c etc - here will be the "other" parameters
 //s - will be the instance of the Java side Storage class passed above
 //now you can do things like
 s.writeToFile('fileName','fileData');
 var fd = s.readFromFile('fileName');
 s.dropFile('fileName');
 ...
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39771148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档