ข้อผิดพลาด Kotlin: ไม่พบ org.jetbrains.kotlin: kotlin-stdlib-jre7: 1.0.7


103

ฉันติดตั้งปลั๊กอิน Kotlin ในแอปของฉัน (v. v1.1.1-release-Studio2.2-1) จากนั้นเลือก "กำหนดค่า Kotlin ในโครงการ" ฉันเลือกคอมไพเลอร์และรันไทม์เวอร์ชัน 1.0.7 Kotlin อัปเดตไฟล์ Gradle ของฉัน ตอนนี้เมื่อฉันพยายามสร้างฉันจะได้รับ:

ข้อผิดพลาด: เกิดปัญหาในการกำหนดค่าโปรเจ็กต์ ': app' ไม่สามารถแก้ไขการอ้างอิงทั้งหมดสำหรับการกำหนดค่า ': app: _debugApkCopy' ไม่พบ org.jetbrains.kotlin: kotlin-stdlib-jre7: 1.0.7 ต้องการโดย:

MyApplication: app: ไม่ระบุ

ฉันไม่แน่ใจว่าฉันพลาดอะไรที่นี่


2
โพสต์ระดับโครงการของคุณgradle
Patel Pinkal

นี่คือวิธีที่คุณเพิ่มการรองรับ Kotlin สำหรับ Android: kotlinlang.org/docs/reference/using-gradle.html
IgorGanapolsky

คำตอบ:


164

แทนที่

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

ด้วย

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

เนื่องจากเวอร์ชันที่มี jre เป็นเวอร์ชันที่สมบูรณ์เพียงแค่แทนที่และซิงค์โปรเจ็กต์

เอกสารอย่างเป็นทางการที่นี่ขอบคุณสำหรับลิงค์ @ ROMANARMY

Happy Coding :)


1
ข้อมูลที่เป็นประโยชน์บางอย่างในเอกสารเกี่ยวกับ jdk และ jre
R0MANARMY

ฉันเชื่อว่าวันหนึ่งทีม Android จะทำให้สิ่งต่างๆง่ายขึ้นไม่มากเพียงเล็กน้อยหรืออย่างน้อยพวกเขาจะเขียนการเปลี่ยนแปลงที่สำคัญในบันทึกการเปลี่ยนแปลงด้วยตัวหนาแทนที่จะฝังลึกลงไปในเว็บไซต์เพื่อขุดออก :))
Farid

13
ฉันใช้เวลาหนึ่งนาทีเต็มในการจ้องมองเพื่อดูความแตกต่างระหว่างjreและjdk- ฉันคงจะแก่แล้ว
James Wang

32

ในระดับโครงการbuild.gradleใช้เฉพาะเวอร์ชันนี้

ต่อ. kotlin_version = '1.3.31'

ลบเวอร์ชันอื่น ๆ

สิ่งนี้จะใช้ได้กับ android studio 3.4 เวอร์ชันล่าสุดเท่านั้น

อัปเดต:พยายามใช้ kotlin เวอร์ชันล่าสุดกับ Android studio ล่าสุดเพื่อหลีกเลี่ยงข้อผิดพลาด


22
คำตอบที่ระบุเวอร์ชันเวทมนตร์ที่จะใช้โดยไม่มีคำอธิบายไม่ได้มีประโยชน์ทั้งหมดและจะมีประโยชน์น้อยลงเมื่อเวลาผ่านไป คุณแนะนำให้อัปเกรดจากเวอร์ชันที่ต่ำกว่าหรือไม่? หรือดาวน์เกรดจากรุ่นที่สูงกว่าเพราะรุ่นที่สูงกว่ามีบั๊ก?
Don Hatch

3
@ DonHatch คำตอบนี้ได้รับในเดือนมีนาคมสำหรับ android studio 2.2 ซึ่งได้รับข้อผิดพลาดที่กล่าวถึงข้างต้นในคำถาม ไม่ใช่สำหรับ android studio 3.0 ขึ้นไป
Patel Pinkal

คำตอบ @ 0xalihn ด้านล่างมีวิธีแก้ปัญหาที่ถูกต้องโดยไม่มีหมายเลขรุ่นเวทมนตร์
Lou Morda

@PatelPinkal คุณสามารถอัปเดตคำตอบสำหรับ Android Studio เวอร์ชันล่าสุดได้ไหม
Arbaz ใน

1
ฉันอัปเดตคำตอบตามเวอร์ชันล่าสุดของสตูดิโอ Android
Arbaz ใน

21

การแบ่งออกkotlin-stdlibเป็นkotlin-stdlib-jre7และkotlin-stdlib-jre8ถูกนำมาใช้กับ Kotlin 1.1 เท่านั้นนั่นเป็นสาเหตุที่ไม่สามารถแก้ไขการอ้างอิงได้ไม่มีเวอร์ชันแพ็คเกจ

ดูเหมือนว่าการอัปเดตไฟล์โครงการของคุณล้มเหลวในบางจุดและตั้งค่าเวอร์ชัน Kotlin เป็น 1.0.7 หากนี่เป็นโปรเจ็กต์ใหม่และไม่มีสิ่งใดที่รั้งคุณจากการใช้ 1.1.1 ฉันจะเปลี่ยนไปใช้สิ่งนั้น ปัญหาของคุณควรจะหมดไปหลังจากทำสิ่งนี้


3
ขอบคุณสำหรับการอธิบาย คำตอบหลายคำบอกว่าใช้ 1.1.1 โดยไม่มีคำอธิบายซึ่งจะทำให้คำตอบนั้นไร้ประโยชน์อย่างรวดเร็วในอนาคต
Don Hatch

12

ในไฟล์ "build.gradle" ให้เปลี่ยน Kotlin เวอร์ชันปัจจุบันที่บรรทัดนั้นแล้วกด synk:

ext.kotlin_version = '1.1.1'

/// จะมีลักษณะดังนี้:

// ไฟล์บิลด์ระดับบนสุดที่คุณสามารถเพิ่มอ็อพชันคอนฟิกูเรชันทั่วไปให้กับโปรเจ็กต์ / โมดูลย่อยทั้งหมด

buildscript {
    ext.kotlin_version = '1.1.1'
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

8

เริ่มต้นด้วย Kotlin 1.1.2 การอ้างอิงกับกลุ่มorg.jetbrains.kotlinจะได้รับการแก้ไขตามค่าเริ่มต้นด้วยเวอร์ชันที่นำมาจากปลั๊กอินที่ใช้ คุณสามารถระบุเวอร์ชันได้ด้วยตนเองโดยใช้สัญกรณ์การอ้างอิงแบบเต็มเช่น:

compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"

หากคุณกำหนดเป้าหมายเป็น JDK 7 หรือ JDK 8 คุณสามารถใช้ไลบรารีมาตรฐาน Kotlin เวอร์ชันขยายซึ่งมีฟังก์ชันส่วนขยายเพิ่มเติมสำหรับ API ที่เพิ่มใน JDK เวอร์ชันใหม่ แทนที่จะใช้ kotlin-stdlib ให้ใช้การอ้างอิงต่อไปนี้:

compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7"
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"

7

โซลูชันใหม่หากคุณใช้ Android Studio 3.2 ฉันแก้ไขปัญหานี้โดยเพิ่ม mavenCentral () เพื่อ build.gradle ของโครงการ:

buildscript {
    ext.kotlin_version = '1.3.0'
    repositories {
        mavenCentral()
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

    }
}

allprojects {
    repositories {
        mavenCentral()
        google()
        jcenter()
    }
}

คุณควรเพิ่มบรรทัดเป็นคำสั่งซื้อนี้เครดิตสำหรับคำตอบนี้


4
buildscript {
    **ext.kotlin_version = '1.1.1'**  //Add this line
    repositories {
        **jcenter()**                 //Add this line
        google()
    }
    dependencies {
//        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath 'com.android.tools.build:gradle:3.1.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        **jcenter()**                 //Add this line
        google()
        maven { url "https://jitpack.io" }
    }
}

คุณสามารถอธิบายได้อย่างละเอียดว่าสิ่งนี้จะช่วยปรับปรุงคำตอบของ Mihail Salari ได้อย่างไรซึ่งดูเหมือนจะเป็น
Nemo

3

หากคุณใช้ Android Studio 3.2 ขึ้นไปปัญหาจะได้รับการแก้ไขโดยการเพิ่ม google () & jcenter () ใน build.gradle ของโครงการ:

repositories {
        google()
        jcenter()
}

2

นี่คือสิ่งที่ใช้ได้ผลสำหรับฉัน: การใช้ Gradle 4.8.1

buildscript {
    ext.kotlin_version = '1.1.1' 
repositories {
    jcenter()
    google()
}
dependencies {
    classpath 'com.android.tools.build:gradle:3.1.0'}
}
allprojects {
    repositories {
        mavenLocal()
        jcenter()
        google()
        maven {
            url "$rootDir/../node_modules/react-native/android"
        }
    maven {
            url 'https://dl.bintray.com/kotlin/kotlin-dev/'
    }
  }
}   

2

ฉันได้แก้ไขปัญหานี้โดยใช้การยกเลิกการเลือกตัวเลือกการทำงานแบบออฟไลน์ในSettings

ป้อนคำอธิบายภาพที่นี่


1
  1. โปรดตรวจสอบเวอร์ชันปัจจุบันของ Kotlin ของคุณในเส้นทางด้านล่าง

    C: \ Program Files \ Android \ Android Studio \ gradle \ m2repository \ org \ jetbrains \ kotlin \ kotlin-stdlib \ 1.0.5

เปลี่ยนเป็นเวอร์ชันนั้น(1.0.5)ในไฟล์ gradle ระดับโปรเจ็กต์

คุณสามารถเห็นในเส้นทางด้านบนของคุณไม่ได้กล่าวถึง Java ใด ๆ - jre versionดังนั้นให้ลบไฟล์ gradle ระดับแอปของคุณตามด้านล่าง

compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"

1

build.gradle (โครงการ)

buildScript {
    ...
    dependencies {
        ...
        classpath 'com.android.tools.build:gradle:4.0.0-rc01'
    }
} 

gradle / wrapper / gradle-wrapper.properties

...
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip

ห้องสมุดบางคนต้องgradle การปรับปรุง เช่น:

androidTestImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutines"

GL


0

ในกรณีที่การพึ่งพา (สกรรมกริยา) ยังคงใช้jreตัวแปรของไลบรารี Kotlin คุณสามารถบังคับใช้jdkตัวแปรด้วยความช่วยเหลือของกลยุทธ์การแก้ปัญหา:

configurations.all {
    resolutionStrategy {
        eachDependency { DependencyResolveDetails details ->
            details.requested.with {
                if (group == "org.jetbrains.kotlin" && name.startsWith("kotlin-stdlib-jre")) {
                    details.useTarget(group: group, name: name.replace("jre", "jdk"), version: version)
                    details.because("Force use of 'kotlin-stdlib-jdk' in favor of deprecated 'kotlin-stdlib-jre'.")
                }
            }
        }
    }
}


-1

ขั้นตอนง่ายๆ:

  1. คลิกไฟล์> โครงสร้างโครงการ

  2. คลิก Dependencies> ค้นหาและคลิก org.jetbrains.kotlin: kotlin-stdlib-jdk7: 1.3.21 (หรือเวอร์ชันปัจจุบันของคุณคืออะไรก็ตาม)

  3. ภายใต้รายละเอียด> ส่วนการอัปเดตคลิก [ตัวแปรการอัปเดต] [การอ้างอิงการอัปเดต]

  4. คลิกตกลง

ขอแสดงความนับถืออย่างสูง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.