2013-01-22 4 views
5

sto usando Rhino in Android per eseguire JavaScript codice funzione in Android (Java) e ottenere il risultato da questo codice, ma ho avuto questa eccezioneerrore Android Rhino non può caricare questo tipo di file di classe

01-22 novembre: 33: 57,063: E/AndroidRuntime (29175): causato da: java.lang.UnsupportedOperationException: non è possibile caricare questo tipo di file di classe

questo è il mio codice

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

Ho ottenuto l'eccezione sul metodo

Funzione fct = contesto.compileFunction (scope, test, "script", 1, null);

Ho scritto questo codice nel metodo onCreate() dopo aver caricato la webview e ho utilizzato rhino1_7R2.jar come jar per Rhino.

Please help me e se si conosce qualsiasi altro modo per ottenere un valore da JavaScript (valore restituito dalla funzione) in Android si prega di consulenza.

Grazie

risposta

3

Ho avuto lo stesso problema e ho trovato una soluzione qui: Problems using Rhino on Android

Per impostazione predefinita, il rinoceronte cercherà fare ottimizzazione dei generando JVM bytecode al volo. Android non esegue bytecode bytecode bytecode JVM bytecode. Ecco perché è necessario disattivare l'ottimizzazione:

context.setOptimizationLevel(-1); 

migliori saluti

+0

dov'è quel metodo? Non appare nel contesto 'contesto' – Ixx

+0

è un oggetto" org.mozilla.javascript.Context ". Assicurati di utilizzare un tipo giusto. –

Problemi correlati