Android Rhino ошибка не может загрузить этот тип файла класса

Я использую Rhino в Android для выполнения кода функции JavaScript в Android (Java) и получить результат из этого кода, но я получил это исключение

01-22 11:33:57.063: E/AndroidRuntime(29175): вызвано: java.lang.UnsupportedOperationException: не удается загрузить этот тип файла класса

Это мой код

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

Я написал этот код в методе onCreate() после загрузки веб-просмотра, и я использую rhino1_7R2.jar в качестве jar для Rhino.

Пожалуйста, помогите мне, и если вы знаете какой-либо другой способ получить значение из JavaScript(возвращаемое значение функции) в Android, пожалуйста, совет.

Спасибо

1 ответ

У меня была такая же проблема, и я нашел решение здесь: Проблемы с использованием Rhino на Android

По умолчанию Rhino будет пытаться выполнить оптимизацию, генерируя байт-код JVM на лету. Android не запускает байт-код JVM, байт-код Dalvik. Вот почему вы должны отключить оптимизацию:

context.setOptimizationLevel(-1);

С наилучшими пожеланиями

Другие вопросы по тегам