cảnh báo: Các tệp JAR thời gian chạy Kotlin trong classpath phải có cùng phiên bản


83

Tôi nhận được cảnh báo sau, nhưng tôi không chắc v1.0.6 nằm ở đâu.

Có thể lỗi này đến từ thư viện Kotlin bằng cách nào đó bao gồm một phiên bản Kotlin cũ?

Bất kỳ ý tưởng nào về cách khắc phục nó hoặc ít nhất là làm thế nào tôi có thể làm theo gợi ý để làm cho kotlin-phản ánh rõ ràng (1.1)?

nhập mô tả hình ảnh ở đây

Câu trả lời:


95

Có vẻ như dự án của bạn được cấu hình theo cách mà bạn phụ thuộc vào kotlin-stdlib1.1 và kotlin-reflect1.0. Trường hợp có thể xảy ra nhất là bạn đã có một phụ thuộc rõ ràng vào kotlin-stdlib1.1 nhưng không có phụ thuộc vào kotlin-reflectvà một số thư viện khác (mà bạn phụ thuộc vào) phụ thuộc vào kotlin-reflect1.0.

Nếu đó thực sự là trường hợp, giải pháp là cung cấp một phụ thuộc rõ ràng vào kotlin-reflect1.1.

Trong Maven, thêm cái này vào pom.xml:

    <dependencies>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-reflect</artifactId>
            <version>1.1.0</version>
        </dependency>
    </dependencies>

Trong Gradle, thêm cái này vào build.gradle:

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-reflect:1.1.0"
}

Xem một số thông tin về điều này và các cảnh báo liên quan trong tài liệu chính thức .


Điều gì xảy ra khi tôi nâng cấp lên 1.1.1? Tôi có nhận được cảnh báo nữa vì phụ thuộc mới 1.1.0 này không?
ycomp

4
Không, cảnh báo chỉ có khi các phiên bản chính / phụ không khớp. Chúng tôi đang giữ cập nhật phiên bản vá hoàn toàn tương thích giữa nhau
Alexander Udalov

26

Tôi đã sửa cảnh báo bằng cách ghi đè phiên bản kotlin được sử dụng trong ứng dụng của mình

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'org.jetbrains.kotlin' && requested.name == 'kotlin-reflect') {
            details.useVersion kotlin_version
        }
    }
}

ví dụ kotlin_version = 1.3.0


Tôi đã thêm điều đó nhưng vẫn gặp lỗi tương tự. Nó được lái xe cho tôi hạt người đàn ông ...
Joseph Wambura

@GithithuWambura đặt nó trực tiếp trong ứng dụng mà không cần build.gradle giằng trong android {}ví dụ
Vlad

8

trước tiên, hãy tìm ra lý do bằng tập lệnh gradle bên dưới

./gradlew app:dependencies

(thay đổi appthành tên mô-đun gradle của bạn)

+--- project :common
|    +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.61
|    |    +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61
|    |    \--- org.jetbrains:annotations:13.0
|    +--- org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.3.3
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61
|    +--- org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:0.12.0 -> 0.14.0
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.3.60 -> 1.3.61

Sau đó, cây phụ thuộc sẽ được hiển thị. kiểm tra phụ thuộc nào sử dụng phụ thuộc vấn đề.

Nếu bạn tìm thấy sự phụ thuộc, hãy quyết định cách giải quyết nó.

  1. nâng cấp phiên bản của phụ thuộc (phiên bản mới nhất của phụ thuộc có thể đề cập đến phiên bản của phụ thuộc vấn đề mới nhất)
  2. hoặc loại trừ vấn đề phụ thuộc khỏi phụ thuộc
  3. hoặc theo dõi các câu trả lời khác.

Tôi không chắc đâu là cách tốt nhất. vui lòng chỉ tham khảo nó.


5

nó xảy ra khi bạn đang sử dụng dao găm trong một dự án kotlin (android) và bạn có phiên bản kotlin là 1.7 tức là

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

tất cả những gì bạn phải làm là thêm phần phụ thuộc bên dưới vào cấp độ lớp xây dựng ứng dụng của bạn

  implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.50"

0

Đảm bảo bạn sử dụng cùng một phiên bản stdlib-jdk7& kotlin-gradle-pluginphụ thuộc để tránh cảnh báo.
Bạn có thể tham khảo ví dụ dưới đây, nơi stdlib-jdk7& kotlin-gradle-plugincả hai đều có cùng một phiên bản

tệp build.gradle cấp ứng dụng

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.0"
    ...
}

tệp build.gradle cấp dự án

buildscript {
    dependencies {
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.0" 
         ...
    }

}


-2

Tôi đã gặp phải vấn đề tương tự nhưng đó là do tiêm sai Dagger


2
Vui lòng đọc liên kết này trước khi sử dụng StackOverflow stackoverflow.com/tour
Antu

2
@Antu Thành thật mà nói, tôi vừa thêm một mũi tiêm Dagger và nhận được thông báo tương tự, vì vậy không có gì sai với câu trả lời này. Không phải là một giải pháp đầy đủ, nhưng nó cung cấp cho các gợi ý về nơi để xem xét.
Rickard Elimää
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.