2013-06-26 5 views
5

क्या किसी ने एंड्रॉइड पर एमवीईएल 2 के साथ अनुभव किया है?एंड्रॉइड पर एमवीईएल 2 अपवाद फेंकता

मैं एक साधारण जावा कार्यक्रम के साथ एक ही कोड बाहर की कोशिश की और बाद में किया है एंड्रॉयड पर:

जब एंड्रॉयड पर निष्पादित निम्न अपवाद फेंक दिया जाता है:

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

एमवीईएल 2 पार्सर शुरू करते समय सिस्टम java.version प्रॉपर्टी के पहले 3 अक्षरों को प्रतिस्थापित करने का प्रयास करता है, और एंड्रॉइड के तहत संस्करण 0 है। इससे अपवादों का एक गुच्छा होता है जो अंततः ExceptionInInitializerError का कारण बनता है।

आप java.version संपत्ति बाध्य करना चाहते हैं, तो आप बस यह अपने आप सेट कर सकते हैं:

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

मुझे पता नहीं अजीब साइड इफेक्ट की किस तरह इस Android के लिए कारण हो सकता है है, लेकिन कम से कम यह हो जाता है एमवीईएल अपवाद फेंकने के बिना पार्सर और दौड़ रहा है!

+2

यदि आप दुष्प्रभावों के बारे में चिंतित हैं, तो संपत्ति को वापस रीसेट करने का प्रयास करें। इस प्रकार सं. 'स्ट्रिंग javaVersion = System.getProperty ("java.version"); System.setProperty ("java.version", "1.6"); doCodeHere(); System.setProperty ("java.version", javaVersion); ' – Kayla

+0

यह उत्तर के रूप में चिह्नित होना चाहिए –

1

"java.version" कुंजी के साथ System.setProperty केवल एंड्रॉइड में प्रोपेरी पढ़ा जाता है, इसलिए यह काम नहीं करेगा। मैंने एमवीईएल 2 को सफलतापूर्वक बिना एंड्रॉइड में एकीकृत करने की कोशिश की है, try using EVAL lib

संबंधित मुद्दे