犀牛+;Android上的env.rhino.js StackOverflower错误

犀牛+;Android上的env.rhino.js StackOverflower错误,android,rhino,stack-overflow,envjs,Android,Rhino,Stack Overflow,Envjs,我读过其他人在Android上成功使用env.rhino.js的报道。我还让rhino在Android应用程序中运行良好,执行简单的脚本,在Java和JavaScript之间双向传递参数。然而,当我尝试使用env.rhino.js时,无论我找到并使用哪个版本的envJs,也不管是哪个rhino(尝试了rhino1_7R2、rhino1_7R5和rhino1_7R5pre),我都会得到一个堆栈溢出错误。基于活动的类中的代码是: public void envjsTest() { Strin

我读过其他人在Android上成功使用env.rhino.js的报道。我还让rhino在Android应用程序中运行良好,执行简单的脚本,在Java和JavaScript之间双向传递参数。然而,当我尝试使用env.rhino.js时,无论我找到并使用哪个版本的envJs,也不管是哪个rhino(尝试了rhino1_7R2、rhino1_7R5和rhino1_7R5pre),我都会得到一个堆栈溢出错误。基于活动的类中的代码是:

public void envjsTest() {
    String envJs = convertAssetToString("env.rhino.js");
    Context cx = ContextFactory.getGlobal().enterContext();
    cx.setOptimizationLevel(-1);
    cx.setLanguageVersion(Context.VERSION_1_8);
    try {
        Scriptable scope = cx.initStandardObjects();
        cx.evaluateString(scope, envJs, "env.rhino.js", 1, null);
    } finally {
        Context.exit();
    }
}
还尝试了不同的版本设置,没有任何帮助。我得到的堆栈跟踪是:

01-18 14:27:18.389: ERROR/AndroidRuntime(2447): FATAL EXCEPTION: main
    java.lang.StackOverflowError
    at org.mozilla.javascript.Decompiler.appendString(Decompiler.java:208)
    at org.mozilla.javascript.Decompiler.addName(Decompiler.java:121)
    at org.mozilla.javascript.IRFactory.transformName(IRFactory.java:811)
    at org.mozilla.javascript.IRFactory.transform(IRFactory.java:120)
    at org.mozilla.javascript.IRFactory.transformInfix(IRFactory.java:738)
    at org.mozilla.javascript.IRFactory.transform(IRFactory.java:161)
    at org.mozilla.javascript.IRFactory.transformInfix(IRFactory.java:738)
    at org.mozilla.javascript.IRFactory.transform(IRFactory.java:161)
    at org.mozilla.javascript.IRFactory.transformInfix(IRFactory.java:738)
    at org.mozilla.javascript.IRFactory.transform(IRFactory.java:161)
    at org.mozilla.javascript.IRFactory.transformInfix(IRFactory.java:740)
    at org.mozilla.javascript.IRFactory.transform(IRFactory.java:161)
    at org.mozilla.javascript.IRFactory.transformInfix(IRFactory.java:740)
    at org.mozilla.javascript.IRFactory.transform(IRFactory.java:161)
    at org.mozilla.javascript.IRFactory.transformInfix(IRFactory.java:740)
    at org.mozilla.javascript.IRFactory.transform(IRFactory.java:161)
    at org.mozilla.javascript.IRFactory.transfor ...
这怎么可能解决呢?同样,一个类似的函数执行简单的JavaScript代码。另外,请不要告诉我使用WebView来执行JavaScript代码。我需要一个具有JavaScript功能的“无头浏览器”,它可以从Android服务调用,在后台执行一些web抓取操作,而用户则忙于屏幕上的其他内容


格雷格

你有没有想过这一点?我有一个我认为是类似的问题。对不起,不,我很久以前就放弃了Rhino…你搬到哪里去了?V8?我通过在执行字符串concats(mytxt=myvar.toString()+myvar2.toString())时调用toString()解决了我的问题。这是一种修复堆栈溢出错误的可怕方法,但似乎有效。我只使用webView控件及其JavaScript引擎,仅此而已。