चेतावनी: क्लासलाइन में कोटलीन रनटाइम JAR फ़ाइलों का एक ही संस्करण होना चाहिए


91

मुझे निम्नलिखित चेतावनी मिलती है, लेकिन मुझे यकीन नहीं है कि v1.0.6 कहाँ रहता है।

क्या यह संभव है कि यह त्रुटि किसी कोटलिन पुस्तकालय से किसी पुराने कोटलिन संस्करण सहित किसी भी तरह से आए?

किसी भी विचार को कैसे ठीक किया जाए या कम से कम कैसे मैं कोटलिन-प्रतिबिंबित स्पष्ट (1.1) बनाने के सुझाव का पालन कर सकता हूं?

यहां छवि विवरण दर्ज करें

जवाबों:


100

ऐसा लगता है कि आपकी परियोजना इस तरह से कॉन्फ़िगर की गई है कि आप kotlin-stdlib1.1 और kotlin-reflect1.0 पर निर्भर हैं । सबसे अधिक संभावना मामला यह है कि आपके पास पहले से ही kotlin-stdlib1.1 पर एक स्पष्ट निर्भरता है, लेकिन कोई निर्भरता नहीं है kotlin-reflect, और कुछ अन्य पुस्तकालय (जो आप पर निर्भर करते हैं) kotlin-reflect1.0 पर निर्भर करता है ।

यदि वास्तव में ऐसा है, तो समाधान kotlin-reflect1.1 पर एक स्पष्ट निर्भरता प्रदान करना है ।

मावेन में, इसे इसमें जोड़ें pom.xml:

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

ग्रेडेल में, इसे इसमें जोड़ें build.gradle:

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

आधिकारिक डॉक्स में इस और संबंधित चेतावनियों के बारे में कुछ जानकारी देखें ।


जब मैं 1.1.1 में अपग्रेड करता हूं तो क्या होता है? क्या मुझे इस 1.1.0 नई निर्भरता के कारण फिर से चेतावनी मिलेगी?
ycomp

4
नहीं, चेतावनी केवल वहां है जब प्रमुख / लघु संस्करण मेल नहीं खाते हैं। हम पैच संस्करण अपडेट को एक दूसरे के बीच पूरी तरह से संगत रख रहे हैं
अलेक्जेंडर उडालोव

28

मैंने अपने ऐप में उपयोग किए गए कोटलिन संस्करण को अधिलेखित करके चेतावनी तय की

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

जैसे kotlin_version = 1.3.0


मैंने उसे जोड़ा लेकिन फिर भी वही त्रुटि मिलती है। यह मुझे नट मैन चला रहा है ...
जोसेफ वंबुरा

1
@GithithuWambura ने इसे सीधे ऐप बिल्ड में डाल दिया। उदासीनता को बिना लादे android {}जैसे
व्लाद

11

सबसे पहले, नीचे दी गई स्क्रिप्ट द्वारा कारण का पता लगाएं

./gradlew app:dependencies

( appआपके ग्रेडेल मॉड्यूल नाम में परिवर्तन )

+--- 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

फिर, निर्भरता ट्री दिखाया जाएगा। जाँच करें कि कौन सी निर्भरता समस्या पर निर्भरता का उपयोग करती है।

यदि आपको निर्भरता मिली, तो तय करें कि इसे कैसे हल किया जाए।

  1. निर्भरता के संस्करण को अपग्रेड करें (निर्भरता का नवीनतम संस्करण नवीनतम मुद्दे पर निर्भरता के संस्करण को संदर्भित कर सकता है)
  2. या निर्भरता से समस्या निर्भरता को बाहर करें
  3. या अन्य उत्तरों का पालन करें।

मुझे यकीन नहीं है कि सबसे अच्छा तरीका क्या है। कृपया बस इसे देखें।


5

यह तब होता है जब आप एक कोटलिन प्रोजेक्ट (android) में डैगर का उपयोग कर रहे होते हैं और आपके पास 1.7 करने के लिए कोटलिन संस्करण होता है।

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

आपको बस इतना करना है कि आपके ऐप बिल्ड ग्रेडेल स्तर के नीचे निर्भरता को जोड़ दें

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

2

चेतावनियों से बचने के लिए सुनिश्चित करें कि आप उसी संस्करण stdlib-jdk7और kotlin-gradle-pluginनिर्भरता का उपयोग करते हैं ।
आप नीचे दिए गए उदाहरण को देख सकते हैं जहां stdlib-jdk7और kotlin-gradle-pluginदोनों का एक ही संस्करण है

app- स्तर build.gradle फ़ाइल

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

प्रोजेक्ट-स्तर build.gradle फ़ाइल

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

}

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.