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);
С наилучшими пожеланиями