2013-06-26 80 views
5

有沒有人有使用Android上MVEL2的經驗?Android上的MVEL2會拋出異常

我已經試過了相同的代碼用一個簡單的Java程序,稍後機器人:

當Android上執行以下異常被拋出:

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

如果世界上沒有解決任何人都可以提出一個模板引擎,它與Android 工作,並支持迭代?

回答

5

當初始化解析器時,MVEL2嘗試對系統java.version屬性的前3個字符進行子字符串處理,而在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

具有「java.version」鍵的System.setProperty似乎只能在android中讀取,因此它不起作用。 我試圖將MVEL 2整合到Android中並沒有成功,try using EVAL lib