2013-08-04 31 views
5

Tôi đang sử dụng Android Studio 0.2.3 với gradle 0,5 và bổ sung phụ thuộc ormlite đến tập tin build.gradle như sau:"đã thêm" ngoại lệ với ormlite và gradle

compile 'com.j256.ormlite:ormlite-android:4.9' 

Gradle tải hai file jar: ormlite-android.jarormlite-core.jar. Vấn đề là, các tệp jar chứa các lớp có tên giống nhau. Vì vậy, tôi có được ngoại lệ nổi tiếng sau đây:

UNEXPECTED TOP-LEVEL EXCEPTION: 
java.lang.IllegalArgumentException: already added: Lcom/j256/ormlite/dao/BaseDaoImpl$1; 

Một số giải pháp khác cho cùng một vấn đề với maven exists, gợi ý để loại trừ các ormlite-core.jar. Điều này sẽ hoạt động nếu tất cả các lớp học từ ormlite-core.jar được bao gồm trong ormlite-android.jar - Tôi đã không kiểm tra btw này. Trong trường hợp đó, tôi không hiểu tại sao lõi ormlite lại nằm trong gói phụ thuộc android ormlite này ... Tôi đang thêm rõ ràng ormlite-android, như bạn có thể thấy trong đoạn mã ở trên.

Nhưng cách loại trừ ormlite-core.jar ở chế độ gradle. Tất cả mọi thứ tôi tìm thấy được cho gradle 1.6, nhưng android studio sử dụng gradle 0.5 - hoặc là điều này chỉ là phiên bản của wrapper android gradle?

.: EDIT :. Để thực hiện phụ thuộc rõ ràng hơn, tôi thêm tập tin build.gradle tôi:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.5.+' 
    } 
} 
apply plugin: 'android' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'com.android.support:support-v4:18.0.+' 
    compile 'com.android.support:appcompat-v7:18.0.+' 
    compile 'com.google.android.gms:play-services:3.1.+' 
    compile 'com.j256.ormlite:ormlite-android:4.9' 
} 

android { 
    compileSdkVersion 18 
    buildToolsVersion "18.0.1" 

    defaultConfig { 
     minSdkVersion 10 
     targetSdkVersion 18 
    } 
} 

Tại sao tôi nghĩ rằng có cùng một lớp học trong hai libs ormlite? ==> Xem ảnh chụp màn hình. Các gói đã mở có giống nhau không? Ngay cả nguồn là. Các lớp riêng biệt duy nhất tôi tìm thấy là SqliteAndroidDatabaseType và những người trong gói com.j256.ormlite.android. Aren't the opened packages identical?

+0

Không chắc chắn vấn đề là gì nhưng ormlite-android không _not_ bao gồm nội dung chính trong trường hợp có bất kỳ câu hỏi nào. Các tài liệu khá đơn giản về điều này: http://ormlite.com/docs/getting-started – Gray

+0

Tôi đã nghiên cứu các tài liệu rồi. – cybergen

Trả lời

13

Bình ormlite-android bạn đang sử dụng chắc chắn là sai. Tôi đoán là ai đó đã xây dựng nó không chính xác với xuất khẩu ormlite-core, đó là lý do tại sao bạn nhận được xung đột hợp nhất. Nếu bạn look at the source for ormlite-android, nó không phải là có hầu hết các gói/lớp học được bao gồm.

Tôi không biết phiên bản ormlite-android hoạt động như thế nào, nhưng có vẻ như 4,46 là phiên bản mới nhất (cập nhật 29 tháng 7 năm 2013), không phải là 4,9 (cập nhật 26 tháng 1 năm 2011). Tôi khuyên bạn nên sử dụng 4,46 thay vì (đó là những gì làm việc cho tôi) với:

'com.j256.ormlite:ormlite-android:4.46' 
+0

Tôi đã làm sạch nhiều lần, không thành công. Tôi đã giải thích câu hỏi của mình để làm cho mọi việc rõ ràng hơn. – cybergen

1

Nhờ @cproinger cho câu trả lời trong another related question.

WOW, giờ nó hoạt động! Tôi hiểu lầm phiên bản (lỗi của tôi). Nhưng dù sao, phiên bản mới hơn (4.46) chỉ chứa các lớp học cụ thể của android trong ormlite-android.jar và mọi thứ khác trong ormlite-core.jar. Tuyệt vời, cảm ơn @cproinger!

+0

Ah, 6 phút quá chậm. Tôi rất vui vì bạn đã tìm thấy câu trả lời! – Greg