2013-06-26 3 views
5

У кого-нибудь есть опыт работы с MVEL2 на Android?MVEL2 on android throws exception

я уже опробовал тот же код с простой программой Java, а затем на андроиде:

Следующая исключение при выполнении на андроид:

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

Я попытался примером из mvel сайт:

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

Если что нет никакого решения может кто-нибудь предложить двигатель шаблона, который работает с андроида и поддерживает итерацию?

ответ

5

MVEL2 пытается подстроить первые 3 символа свойства java.version системы при инициализации анализатора, а в Android - версии 0. Это вызывает кучу исключений, которые в конечном итоге вызывают ExceptionInInitializerError.

Если вы хотите, чтобы свойство java.version, вы можете просто установить его самостоятельно:

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

Я понятия не имею, какие нечетные побочные эффекты, это может привести к Android, но, по крайней мере, он получает синтаксический анализатор MVEL запускается и исключает исключения!

+2

Если вы беспокоитесь о побочных эффектах, попробуйте отправить их обратно. Как это. 'String javaVersion = System.getProperty (" java.version "); System.setProperty ("java.version", "1.6"); doCodeHere(); System.setProperty ("java.version", javaVersion); ' – Kayla

+0

это должно быть отмечено как ответ –

1

System.setProperty с ключом «java.version», кажется, только для чтения в android, поэтому он не будет работать. Я пытался интегрировать MVEL 2 в андроид без каких-либо успехов, try using EVAL lib