2011-05-27 27 views
6

Tôi đã trích xuất một loạt chức năng từ ứng dụng của mình vào thư viện. Vấn đề là tôi muốn sử dụng các lớp thư viện trong cả mã sản xuất và các bài kiểm tra. Vấn đề là ứng dụng của tôi, thư viện của tôi và mã thử nghiệm là các mô-đun riêng biệt, do đó cả mã ứng dụng và mã kiểm tra cần phải phụ thuộc vào thư viện. Khi tôi cố gắng biên dịch các module kiểm tra, tôi nhận được thông báo lỗi sau:Làm cách nào để nhập thư viện Android và sử dụng nó trong cả mã sản xuất và kiểm tra?

UNEXPECTED TOP-LEVEL EXCEPTION: 
java.lang.IllegalArgumentException: already added: (some class) 

Đó là khó hiểu, nhưng nó đang cố gắng để nói rằng tôi đã cố gắng để thêm cùng lớp đến tập tin .dex nhiều hơn một lần. Nó không quá ngạc nhiên vì mã thử nghiệm phụ thuộc vào mã thư viện và trên ứng dụng tại thời gian biên dịch, cũng phụ thuộc vào thư viện tại thời gian biên dịch. Làm cách nào để thiết lập các phụ thuộc của tôi (hoặc thay đổi mã của tôi) để tránh điều này?

LƯU Ý: Tôi đang sử dụng IntelliJ IDEA 10.5 CE, vì vậy tôi sử dụng thuật ngữ của họ, nhưng tôi nghĩ vấn đề ít nhất là khái niệm không thuyết phục về IDE.

Trả lời

0

Xin chào, tôi cảm thấy cùng một lọ được thêm nhiều lần bằng nhiều cách khác nhau.

Có hai cách để đặt jar trong dự án của bạn

Right on Project->Properties->Java Build Path->Add Jars-> 
Right on Project->Properties->Java Build Path->Add External jars-> 

loại bỏ đầu tiên tất cả các lọ. bên trong thư mục ứng dụng của bạn tạo một thư mục có chứa tất cả các lọ cần thiết.

Right on Project->Properties->Java Build Path->Add Jars-> select your project folder and select the jar file 

Cảm ơn Deepak

+0

Cảm ơn câu trả lời của bạn, Deepak. Vấn đề của tôi hơi khác một chút, bởi vì thư viện của tôi không đơn giản .jar. Đó là một dự án thư viện Android, vì vậy tôi đã nhập nó như một mô-đun riêng biệt và thêm một phụ thuộc vào mô-đun cho nó. – Lyudmil

2

Đó là một lỗi trong IDEA, chúng tôi đã gửi một vấn đề cho nó, please watch/vote.

+0

Cảm ơn bạn rất nhiều. Khi nó được cố định, tôi sẽ chấp nhận câu trả lời của bạn. – Lyudmil

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