2013-01-22 30 views
5

Tôi đang sử dụng Rhino trong android để thực hiện mã JavaScript chức năng trong Android (java) và nhận được kết quả từ mã này, nhưng tôi có ngoại lệ nàyandroid lỗi Rhino không thể tải loại tệp này lớp

01-ngày 22 tháng 11: 33: 57,063: E/AndroidRuntime (29.175): Nguyên nhân: java.lang.UnsupportedOperationException: không thể tải loại tệp này lớp

Đây là mã của tôi

String test = "function abc(x,y) {return x+y;}"; 
    org.mozilla.javascript.Context context = org.mozilla.javascript.Context.enter(); 
    try { 
     ScriptableObject scope = context.initStandardObjects(); 
     Scriptable that = context.newObject(scope); 
     Function fct = context.compileFunction(scope, test, "script", 1, null); 
     Object result = fct.call(context, scope, that, new Object[] { 2, 3 }); 
     Log.i("JML...Info", "jajajajaj = " + org.mozilla.javascript.Context.jsToJava(result, int.class)); 
    } finally { 
     org.mozilla.javascript.Context.exit(); 
    } 

Tôi có ngoại lệ về phương pháp

Chức năng fct = context.compileFunction (scope, test, "script", 1, null);

Tôi đã viết mã này trong phương thức onCreate() sau khi tải webview và tôi sử dụng rhino1_7R2.jar làm jar cho Rhino.

Hãy giúp tôi và nếu bạn biết cách nào khác để nhận giá trị từ JavaScript (giá trị trả về của hàm) trong android, vui lòng tư vấn.

Cảm ơn

Trả lời

3

tôi đã cùng một vấn đề và tôi đã tìm thấy một giải pháp ở đây: Problems using Rhino on Android

Theo mặc định, tê giác sẽ cố gắng làm tối ưu hóa bằng cách tạo ra JVM bytecode khi đang bay. Android không chạy bytecode JVM byt Dalvik bytecode. Đó là lý do tại sao bạn phải vô hiệu hóa tối ưu hóa:

context.setOptimizationLevel(-1); 

Trân trọng

+0

nơi là phương pháp đó? Không xuất hiện trong ngữ cảnh 'ngữ cảnh ' – Ixx

+0

là đối tượng" org.mozilla.javascript.Context ". Đảm bảo bạn sử dụng đúng loại. –

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