2013-06-26 31 views
5

Có ai có kinh nghiệm với MVEL2 trên Android không?MVEL2 trên android ném ngoại lệ

tôi đã cố gắng ra cùng mã với một chương trình java đơn giản và sau đó trên android:

Trường hợp ngoại lệ sau đây được ném khi thực thi trên android:

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

tôi đã cố gắng ví dụ từ mvel trang web:

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

Nếu không có giải pháp nào có thể đề xuất công cụ mẫu hoạt động với android và hỗ trợ lặp lại?

Trả lời

5

MVEL2 cố gắng xâu chuỗi 3 ký tự đầu tiên của thuộc tính java.version hệ thống khi khởi chạy trình phân tích cú pháp và trong phiên bản Android là 0. Điều đó gây ra một loạt các ngoại lệ mà cuối cùng gây ra ExceptionInInitializerError.

Nếu bạn muốn để buộc các tài sản java.version, bạn chỉ có thể thiết lập nó tự hỏi:

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

Tôi không có ý tưởng những loại tác dụng phụ kỳ lạ này có thể gây cho Android, nhưng ít nhất nó được trình phân tích cú pháp MVEL và chạy mà không cần phải ném ngoại lệ!

+2

Nếu bạn lo lắng về tác dụng phụ, hãy thử đặt lại thuộc tính. Như thế này. 'Chuỗi javaVersion = System.getProperty (" java.version "); System.setProperty ("java.version", "1.6"); doCodeHere(); System.setProperty ("java.version", javaVersion); ' – Kayla

+0

phải được đánh dấu là câu trả lời –

1

System.setProperty với khóa "java.version" dường như chỉ được đọc thích hợp trong Android, vì vậy nó sẽ không hoạt động. Tôi đã cố gắng tích hợp MVEL 2 vào android mà không thành công, try using EVAL lib

Các vấn đề liên quan