2016-09-23 35 views
8

Tôi có một dự án Android hiện có sử dụng libs sau:Kotlin lớp NoClassDefFoundError tai nạn

  1. AutoValue
  2. Dagger2
  3. RxJava
  4. Retrolambda

Tôi cố gắng để thêm Kotlin Hỗ trợ để tôi có thể từ từ di chuyển dự án sang Kotlin. Đây là những gì tôi đã làm.

  1. Đã thêm Kotlin dependency.
  2. Chuyển Đổi một trong các lớp trên lớp Kt và chuyển sang src/main/kotlin/..package..

  3. Added Kotlin trong bộ nguồn. sourceSets { main.java.srcDirs + = 'src/main/Kotlin' }

  4. Khi tôi làm một xây dựng sạch và triển khai ứng dụng, tôi nhận được ngoại lệ NoClassDefFoundError. Tuy nhiên, nếu tôi triển khai một lần nữa nó hoạt động tốt. Bất kỳ đề xuất nào? Tôi không có bất kỳ chú thích nào trong lớp tôi đã chuyển đổi nên tôi không áp dụng plugin kapt.

Lưu ý: Tôi đang sử dụng kotlin mới nhất 1.0.4. Ngoài ra tôi đã tắt ngay lập tức.

+0

bạn có thể muốn báo cáo này với [các Kotlin theo dõi vấn đề] (http://kotl.in/issue) bởi vì nó có vẻ giống như một cái gì đó mà cần phân loại và có khả năng báo cáo như là một lỗi. –

+0

Bạn có sử dụng bất kỳ lớp được tạo nào trong tệp .kt mới của mình không? Có lẽ trong thời gian biên soạn kotlin lớp này không tồn tại. – lllyct

Trả lời

4

Chuyển đến Files > Settings và tắt hoàn toàn Instant Run, tôi muốn bỏ chọn tất cả các hộp kiểm.

Làm sạch và xây dựng lại dự án.

Sau đó, nó sẽ làm việc

Edit: Như bạn nói rằng tức thì bị vô hiệu hóa - sử dụng protip kiểm tra cấu hình của bạn và cập nhật Gradle và Android Studio nếu bạn không sử dụng mới nhất.

Theo điều này issue, việc thay đổi phiên bản plugin Gradle từ 2,10 xuống 2,14.1 có thể hữu ích.

Protip: Sử dụng kết hợp phím Ctrl + Shift + A để tìm lệnh như

  • Configure Kotlin in Project

  • Configure Kotlin Updates

  • Convert Java File to Kotlin

+0

Vâng tôi đã tắt ngay lập tức chạy hoàn toàn và đang chạy AS 2.2 với công cụ xây dựng phiên bản 2.2.0 với gradle 2.14.1. – bond

+0

thay đổi công cụ xây dựng thành 24.0.3 – piotrek1543

+0

@bond được giải quyết. Nếu có, hãy thêm giải pháp – piotrek1543

0

trước tiên bạn cần định cấu hình studio android bằng kotlin, vì cần thêm plugin kotlin trong studio android và sau đó cần thêm phụ thuộc và sau đó chuyển đổi lớp java thành kotlin, hãy xem video này.

https://www.youtube.com/watch?v=DN2EDdycZ3c

0

Suffix các lớp Kotlin với kt khi gọi họ từ Java.

Nếu không, hãy thêm @file:JvmName("Utils") trước gói trong lớp Kotlin nếu bạn phải gọi bằng java với bất kỳ tên tùy chỉnh nào bạn muốn như Utils trong trường hợp này.

more details can be found here