2012-03-22 25 views
7

Tôi có một dự án tham chiếu hai dự án thư viện. Sau khi nâng cấp các công cụ ADT và SDK lên version 17, ứng dụng gặp sự cố ngay sau khi nó truy cập tham chiếu đến một lớp được xác định trong một trong các dự án Thư viện. Lỗi như:Công cụ SDK đã cập nhật và ADT đến 17 và hiện đang nhận được VerifyErrors

Unable to resolve superclass of Lcom/my/package/name/MyActivity; (118) 
Link of class 'Lcom/my/package/name/MyActivity;' failed 
VFY: unable to find class referenced in signature (Lcom/my/package/name/MyActivity;) 

và:

FATAL EXCEPTION: main 
    java.lang.VerifyError: my/package/name/util/SomeClass 
    at my.package.name.App.onCreate(App.java:120) 
    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:969) 
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3925) 
    at android.app.ActivityThread.access$1300(ActivityThread.java:122) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1184) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:4340) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
    at dalvik.system.NativeStart.main(Native Method) 

(gói và các lớp học của tôi là không được đặt tên như vậy, chỉ cần sửa đổi chúng cho đăng tải tại đây)

Bất kỳ ý tưởng về những gì đang xảy ra đây? Theo như tôi có thể nói không có lỗi xây dựng và dự án của tôi trông giống như nó đang tham chiếu dự án thư viện một cách chính xác.

+0

Bạn đã thử làm sạch và xây dựng lại các dự án của mình chưa? –

+0

Tôi làm mới, tôi làm sạch, xây dựng lại, đóng cửa, mở ra, khóc và một vài thứ khác. ;) Làm sạch dường như không thay đổi bất cứ điều gì, nhưng tôi đã tìm thấy một cái gì đó đã làm (xem bên dưới). Cảm ơn mặc dù! – cottonBallPaws

Trả lời

12

Tôi gặp vấn đề tương tự. Tìm bài đăng này: tiết kiệm cho tôi một số thất vọng.

+0

Cảm ơn bạn rất nhiều vì liên kết đó! Tất cả những gì tôi phải làm là đổi tên thư mục "lib" thành "libs" – twig

+0

Bạn cũng có thể sử dụng tính năng Order and Export của eclipse – Bendlas

4

Whew, đó là đáng sợ nhưng tôi đã thử một tấn những thứ khác nhau cho đến khi nó hoạt động. Một nơi nào đó trong tất cả điều này, nó giải quyết nó. Dự án thư viện của tôi có một số lọ được thêm vào thư mục "lib" và được đính kèm vào đường dẫn xây dựng.

Tôi đọc ghi chú thay đổi nhật ký này: http://tools.android.com/recent/dealingwithdependenciesinandroidprojects về thay đổi đối với thư viện và phụ thuộc. Tôi nhận thấy điều này:

Dự án có thư mục nguồn, cũng như Dự án thư viện và phụ thuộc tệp jar. Không có thiết lập khác cần thiết vì thêm dự án Thư viện là một phụ thuộc vào project.properties, classpath của dự án được tự động với:

The content of the project’s libs/*.jar 
The output of the Library Projects. 
The Library Projects’ libs/*.jar 

Đối với một số lý do, thư mục dự án thư viện của tôi được mệnh danh là "lib" không "libs ". Tôi đã sử dụng nó theo cách đó trong gần hai năm mà không có bất kỳ vấn đề gì, nhưng tôi đã đi trước và thay đổi nó thành "libs". Sau đó tôi làm mới dự án và tắt cờ "Thư viện", sau đó bật lại để đảm bảo rằng nó đã thay đổi.

Ngoài ra, với các công cụ mới, họ đề cập rằng nó xử lý bao gồm các lọ của dự án thư viện trong dự án tham chiếu đến thư viện. Đến thời điểm này, tôi đã thêm các lọ của dự án thư viện vào dự án tham chiếu một cách thủ công. Vì vậy, tôi đã đi vào dự án tham chiếu, và loại bỏ các lọ khỏi đường dẫn xây dựng. Tôi sau đó khi vào các thuộc tính dự án và loại bỏ các dự án thư viện và lại thêm nó.

Cuối cùng, tôi nhận thấy tệp jar nằm trong thư mục của dự án thư viện nhưng không được sử dụng. Nó chỉ nằm trong thư mục. Tôi đã xóa tệp đó.

Vì vậy, một nơi nào đó ở đó nó bắt đầu hoạt động trở lại. Tôi tưởng tượng sửa chữa thực sự đã thay đổi "lib" thành "libs" nhưng tôi muốn chắc chắn rằng tôi đã đề cập đến tất cả trong trường hợp nó giúp bất kỳ nhà phát triển nào trải qua nỗi sợ hãi và hoảng loạn trong trái tim của họ. Chúc may mắn!

1

@kargi

Như một quy luật, tôi nghĩ rằng giải pháp herehere là một thói quen rất xấu. Maven đã giải quyết việc kinh doanh thư mục lib vô lý này từ lâu rồi, nhưng Maven cũng không xây dựng Android rất hiệu quả, vì vậy tôi khuyên bạn nên sử dụng tính năng xuất Eclipse, như tôi mô tả here.

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