2013-06-26 17 views
5

誰かがアンドロイドでMVEL2の経験がありますか?MVEL2 on android throws exception

私は、単純な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)); 

theresのは何の解決策誰でもアンドロイド と連携し、反復をサポートするテンプレートエンジンを提案することができなかった場合は?

答えて

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はアンドロイドでは読み込み専用であると思われるため、動作しません。 MVEL 2をアンドロイドに統合しようとしましたが、成功しませんでした。try using EVAL lib

関連する問題