android Rhino error can't load this type of class file
Asked Answered
O

1

11

I'm using Rhino in android to execute JavaScript function code in Android(java) and get the result from this code, but I got this exception

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

This is my code

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

I got the exception on method

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

I wrote this code in method onCreate() after load the webview and I use rhino1_7R2.jar as a jar for Rhino.

Please help me and if u know any other way to get a value from JavaScript(return value of function) in android please advice.

Thanks

Ondometer answered 22/1, 2013 at 8:53 Comment(0)
H
11

I had the same problem and I have found a solution here: Problems using Rhino on Android

By default, rhino will try do optimization by generating JVM bytecode on the fly. Android doesn't run JVM bytecode byt Dalvik bytecode. That is why you have to disable optimization:

context.setOptimizationLevel(-1);

Best regards

Hartley answered 8/8, 2014 at 8:44 Comment(2)
where's that method? Doesn't appear in contextHorsefaced
context is a "org.mozilla.javascript.Context" object. Make sure you use a right type.Hartley

© 2022 - 2024 — McMap. All rights reserved.