10

我在 android 中使用 Rhino 在 Android(java) 中执行 JavaScript 函数代码并从此代码中获取结果,但我得到了这个异常

01-22 11:33:57.063: E/AndroidRuntime(29175): Caused by: java.lang.UnsupportedOperationException: can't load this type of class file

这是我的代码

String test = "function abc(x,y) {return x+y;}";
    org.mozilla.javascript.Context context = org.mozilla.javascript.Context.enter();
    try {
        ScriptableObject scope = context.initStandardObjects();
        Scriptable that = context.newObject(scope);
        Function fct = context.compileFunction(scope, test, "script", 1, null);
        Object result = fct.call(context, scope, that, new Object[] { 2, 3 });
        Log.i("JML...Info", "jajajajaj = " + org.mozilla.javascript.Context.jsToJava(result, int.class));
    } finally {
        org.mozilla.javascript.Context.exit();
    }

我在方法上遇到了异常

函数 fct = context.compileFunction(scope, test, "script", 1, null);

我在加载 webview 后在方法 onCreate() 中编写了这段代码,并使用 rhino1_7R2.jar 作为 Rhino 的 jar。

请帮助我,如果你知道任何其他方式从 Android 中的 JavaScript(函数的返回值)获取值,请提供建议。

谢谢

4

1 回答 1

9

我遇到了同样的问题,我在这里找到了解决方案:Problems using Rhino on Android

默认情况下,rhino 会尝试通过动态生成 JVM 字节码来进行优化。Android 不运行 JVM 字节码 byt Dalvik 字节码。这就是为什么您必须禁用优化:

context.setOptimizationLevel(-1);

此致

于 2014-08-08T08:44:52.157 回答