2013-02-12 47 views
15

Tôi đang viết thử nghiệm cho dự án Android ngay bây giờ và chỉ không hiểu tại sao cơn đau này lại như vậy! Sau một ngày toàn bộ thiết lập cuối cùng tôi nhận được nó hoạt động, nhưng bây giờ, sau khi tôi đã viết nhiều lớp học thử nghiệm Intellij IDEA đứng:Chạy thiết bị đo không thành công do 'java.lang.IllegalAccessError'

Test failed to run to completion. Reason: 'Instrumentation run failed due to 'java.lang.IllegalAccessError''. Check device logcat for details 
Test running failed: Instrumentation run failed due to 'java.lang.IllegalAccessError' 

Các thử nghiệm tôi đã chạy chỉ một vài phút trước đây không thể chạy được nữa . Có tính đến tôi quay trở lại cam kết mới nhất của tôi, nơi tất cả mọi thứ là lý tưởng và tôi đã không thay đổi bất kỳ cài đặt tôi chỉ tự hỏi tại sao.

Đây là những gì logcat đang nói:

02-12 20:16:09.398: E/AndroidRuntime(4922): FATAL EXCEPTION: main 
02-12 20:16:09.398: E/AndroidRuntime(4922): java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at com.actionbarsherlock.view.MenuInflater$MenuState.readItem(MenuInflater.java:327) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at com.actionbarsherlock.view.MenuInflater.parseMenu(MenuInflater.java:147) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at com.actionbarsherlock.view.MenuInflater.inflate(MenuInflater.java:97) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at <package>.ui.CheckPasswordActivity.onCreateOptionsMenu(CheckPasswordActivity.java:130) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at android.support.v4.app._ActionBarSherlockTrojanHorse.onCreatePanelMenu(_ActionBarSherlockTrojanHorse.java:45) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at com.actionbarsherlock.ActionBarSherlock.callbackCreateOptionsMenu(ActionBarSherlock.java:556) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchCreateOptionsMenu(ActionBarSherlockNative.java:60) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at com.actionbarsherlock.app.SherlockFragmentActivity.onCreatePanelMenu(SherlockFragmentActivity.java:154) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:407) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:769) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:201) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at android.view.Choreographer.doCallbacks(Choreographer.java:562) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at android.view.Choreographer.doFrame(Choreographer.java:531) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at android.os.Handler.handleCallback(Handler.java:725) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at android.os.Handler.dispatchMessage(Handler.java:92) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at android.os.Looper.loop(Looper.java:137) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at android.app.ActivityThread.main(ActivityThread.java:5039) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at java.lang.reflect.Method.invoke(Method.java:511) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
02-12 20:16:09.398: E/AndroidRuntime(4922):  at dalvik.system.NativeStart.main(Native Method) 

Mặc dù tôi thậm chí không chạm vào lớp này, dòng CheckPasswordActivity: 130 nó đề cập đến chỉ là:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getSupportMenuInflater(); 
     inflater.inflate(R.menu.menu_check_password, menu); 
     return true; 
    } 
+0

giống như một số vấn đề phụ thuộc với thư viện hỗ trợ. kiểm tra các phụ thuộc của cài đặt mô-đun thử nghiệm của bạn (F4 trong IDEA) rằng cả thư viện hỗ trợ và ActionBarSherlock đều có phạm vi 'được cung cấp' –

+0

Bạn có thể cho tôi biết thêm vui lòng không? Tôi có abs, mô-đun nơi nguồn của tôi, thư viện hỗ trợ và mô-đun thử nghiệm, nơi các bài kiểm tra của tôi là. Làm thế nào những phụ thuộc này sẽ như thế nào? – Eugene

+0

Trong cài đặt mô-đun, đảm bảo phạm vi được cung cấp cho abs và thư viện hỗ trợ –

Trả lời

23

Tôi cuối cùng đã tìm được giải pháp. Vấn đề là với phụ thuộc trên thực tế, nó vẫn chưa rõ lý do tại sao nó được sử dụng để làm việc và sau đó đột nhiên từ chối, nhưng ở đây là như thế nào phụ thuộc sẽ trông như thế cho mô-đun thử nghiệm của bạn:

enter image description here

Vì vậy, tất cả trong tất cả các bạn cần để đảm bảo tất cả các thư viện và thư viện dự án của bạn được liệt kê cho mô-đun thử nghiệm của bạn và được đánh dấu là "Được cung cấp" trừ Robotium lib, là "Biên dịch".

+0

Điều này làm việc cho tôi. Trong trường hợp của tôi, tôi cũng có phụ thuộc vào thư viện Mockito. Về cơ bản, tôi đã đánh dấu tất cả các phụ thuộc là "Được cung cấp", ngoại trừ các thư viện mà dự án thử nghiệm của tôi trực tiếp phụ thuộc vào. Chúng được đánh dấu là "Biên dịch". –

1

Dựa trên your other question. .. Tôi nghĩ rằng tôi có phần nào của một thiết lập tương tự như bạn ... Dưới đây là khá nhiều cách phụ thuộc của tôi được thiết lập (đọc các mục phụ như phụ thuộc)

  • ActionBarSherlock
    • android-support-v4
  • Android Mô-đun
    • ActionBarSherlock
    • android-support-v4
  • Unit Test
    • robotium
    • mô-đun Android

Tất cả các phụ thuộc đều thiết lập là "biên dịch"

tôi sử dụng ActionBarSherlock từ mã nguồn và module có "Là một dự án thư viện" kiểm tra.

+0

Tôi có cùng phụ thuộc, hãy kiểm tra kỹ chúng, không hỗ trợ - tôi vẫn không thể chạy một số thử nghiệm của mình vì lý do không xác định. – Eugene

0

Tôi vừa gặp sự cố rất giống với cách giải quyết vấn đề.

Xóa lib android-support-v4 khỏi dự án thử nghiệm của bạn (hoặc bất kỳ lib nào được tăng gấp đôi cho vấn đề đó). Làm sạch các dự án và xây dựng lại nó.

0

Thêm dòng sau:

manifestmerger.enabled=true 

đến file project.properties bạn của dự án ứng dụng của bạn.

Có phải sửa chữa cho tôi :) Đã có một dự án với một Dự án Thư viện

+0

bạn thêm dòng này ở đâu? –

+0

trong tệp project.properties của dự án eclipse (ui test projecT) – cV2

2

Trong trường hợp của tôi, đó là do các lọ trùng lặp được bao gồm.

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