2013-06-26 10 views
5

Qualcuno ha esperienza con MVEL2 su Android?MVEL2 su Android genera un'eccezione

ho provato lo stesso codice con un semplice programma Java e in seguito su Android:

la seguente eccezione viene generata quando eseguito su Android:

E/AndroidRuntime(30793): java.lang.ExceptionInInitializerError 

ho provato l'esempio dal MVEL sito web:

String template = "Hello, my name is @{name.toUpperCase()}"; 
Map vars = new HashMap(); 
vars.put("name", "Michael"); 
System.out.println(TemplateRuntime.eval(template, vars)); 

Se c'è nessuna soluzione chiunque potrebbe suggerire un motore di template che funziona con Android e supporta l'iterazione?

risposta

5

MVEL2 tenta di eseguire la sottostringa dei primi 3 caratteri della proprietà java.version del sistema durante l'inizializzazione del parser e, in Android, la versione è 0. Ciò provoca un sacco di eccezioni che causano infine l'eccezione ExceptionInInitializerError.

Se si vuole forzare la proprietà java.version, si può semplicemente impostare da soli:

System.setProperty("java.version", "1.6"); 

Non ho idea di che tipo di effetti collaterali dispari questo potrebbe causare per Android, ma almeno si arriva il parser MVEL installato e funzionante senza generare eccezioni!

+2

Se si è preoccupati per gli effetti collaterali, provare a ripristinare la proprietà indietro. Come questo. 'String javaVersion = System.getProperty (" java.version "); System.setProperty ("java.version", "1.6"); doCodeHere(); System.setProperty ("java.version", javaVersion); ' – Kayla

+0

questo deve essere contrassegnato come risposta –

1

System.setProperty con la chiave "java.version" sembra essere letto solo correttamente in Android, quindi non funzionerà. ho provato ad integrare MVEL 2 in Android senza successo, try using EVAL lib