5

AndroidでMVEL2を使用した経験のある人はいますか?

私は単純なJavaプログラムと後でAndroidで同じコードを試しました:

Android で実行すると、次の例外がスローされます。

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

mvel Web サイトの例を試しました。

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

解決策がない場合、Android で動作し反復をサポートするテンプレート エンジンを提案できる人はいますか?

4

2 に答える 2

5

MVEL2 は、パーサーを初期化するときに、システムの java.version プロパティの最初の 3 文字をサブストリング化しようとします。Android では、バージョンは 0 です。これにより、最終的に ExceptionInInitializerError を引き起こす一連の例外が発生します。

java.version プロパティを強制したい場合は、自分で設定するだけです:

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

これが Android にどのような奇妙な副作用を引き起こすかはわかりませんが、少なくとも例外をスローすることなく MVEL パーサーを起動して実行することができます。

于 2013-07-04T08:01:51.010 に答える
1

「java.version」キーを持つ System.setProperty は、Android では読み取り専用のプロパティのようで、機能しません。MVEL 2 を Android に統合しようとしましたが成功しませんでした。EVAL lib を使用してみてください

于 2015-04-28T15:49:28.100 に答える