Android上的rhino + env.rhino.js StackOverflowError

时间:2013-01-18 19:42:55

标签: android rhino stack-overflow envjs

我在Android上使用env.rhino.js成功阅读了其他人的报告。我还让犀牛在Android应用程序中正常工作并执行简单的脚本,在Java和JavaScript之间传递参数。但是,当我尝试使用env.rhino.js时,无论我找到和使用哪个版本的envJs,无论哪个rhino(尝试过rhino1_7R2,rhino1_7R5和rhino1_7R5pre),我都会得到一个StackOverflowError。基于活动的类中的代码是:

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();
    }
}

尝试了不同的VERSION设置,没有任何帮助。我得到的堆栈跟踪是:

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服务调用,在后台进行一些网页抓取,同时用户在屏幕上占用其他内容。

格雷格

0 个答案:

没有答案