การอ้างอิงที่ไม่ได้รับการแก้ไขของ Kotlin ใน IntelliJ


93

ฉันเริ่มต้นด้วยบทช่วยสอนสำหรับการเรียนรู้ Kotlin ในIntelliJเมื่อฉันลองเรียกใช้ตัวอย่างเช่น

fun main(args: Array<String>) {
 println("lol")
}

การดำเนินการถูกระงับด้วยข้อความError:(5, 5) Kotlin: Unresolved reference: println นี้นี่เป็นครั้งแรกที่ฉันใช้ IntelliJ ฉันไม่เคยทำงานในJavaโปรเจ็กต์ด้วยฉันขาดอะไรไปหรือเปล่า?

แก้ไข: ฉันเห็นคำถามอื่นแล้วคำตอบไม่ถูกต้องสำหรับสถานการณ์ของฉัน


เวอร์ชั่น Intellij IDEA? มีการติดตั้งปลั๊กอิน Kotlin เวอร์ชันใด
D3xter

คุณเลือกตัวเลือกใดในกล่องโต้ตอบ Kotlin runtime
yole

ฉันเพิ่งติดตั้งเมื่อวานนี้
IDEA

ใช่ฉันได้รับสิ่งนี้จากตัวอย่าง "Hello world" โดยใช้ Gradle และ Netbeans งานสร้าง gradle ฉันดูเหมือนปัญหาการเสียบปลั๊กกับ Netbeans ด้วย อนิจจาไม่มีการอัปเดตล่าสุดสำหรับปลั๊กอิน Netbeans
จะ

คำตอบ:


93

ปลั๊กอิน Intellij IDEA ของคุณและรันไทม์ / คอมไพเลอร์ Kotlin ที่คุณใช้ในโปรเจ็กต์ต้องตรงกัน ตัวอย่างเช่นหากปลั๊กอิน IDE เป็นเบต้า 1 แต่โครงการ Gradle / Maven ของคุณใช้ M12 คุณจะพบปัญหาตามที่อธิบายไว้ ดังนั้นตรวจสอบว่าทุกอย่างเรียบร้อย

หากคุณยังคงมีปัญหากับปลั๊กอินรุ่นเก่าบางตัวคุณต้องล้างแคชใน Intellij IDEA (เมนูไฟล์ล้างแคชและรีสตาร์ทเลือกตัวเลือกเพื่อรีสตาร์ท)


การรวมกันของการล้างแคชการอัปเดต android studio และปลั๊กอิน kotlin ได้รับการแก้ไขให้ฉัน ขอบคุณ
user1405990

สวัสดีอีกครั้งด้วยเวลาพิจารณาเนื้อหาและ Kotlin google-ing เล็กน้อยฉันไม่คิดว่าสาเหตุที่นี่อยู่ในปลั๊กอินต่อตัว printlnอยู่ในแพ็คเกจkotlin.io Kotlin-stdlib JAR มี "kotlin.io" อยู่ในนั้น จึงไม่มีปัญหาบนพื้นผิว ฉันรวม kotlin.io ไว้อย่างชัดเจน * - ผลลัพธ์: Unresolved reference: io. ในฐานะที่เป็นไฟล์เก็บถาวร JAR ความละเอียดในการอ้างอิงควรเป็นเนื้อหาสำหรับอนุบาล เป็นยังไงบ้าง!??
จะ

ฉันกลับมาแล้ว ... ชาว Netbeans สามารถ 'แก้ไข' สิ่งนี้ได้เช่นกัน - วางแคชผู้ใช้ netbeans คุณสามารถดูตำแหน่งของไดเรกทอรีแคช Netbeans ได้โดยคลิกที่ช่อง Help / About ล้าง - หยุด Netbeans - ปล่อยแคช - รีสตาร์ท Netbeans - สร้างใหม่! Volia
จะ

หากคุณเห็นปัญหานี้ในการสร้างไฟล์ Gradle คุณเท่านั้น แต่ไม่ไฟล์ที่มาของโครงการนี้จะช่วยให้: discuss.kotlinlang.org/t/...
AlexO

25

หากใครสะดุดในสิ่งนี้และNEITHER Invalidate CacheหรือUpdate Kotlin's Versionทำงาน:

1) ขั้นแรกตรวจสอบให้แน่ใจว่าคุณสามารถสร้างได้จากภายนอก IDE หากคุณกำลังใช้gradleตัวอย่างเช่น:

gradle clean build

Kotlinหากทุกอย่างเป็นไปด้วยดีแล้วสภาพแวดล้อมของคุณเป็นสิ่งที่ดีทุกคนที่จะทำงานร่วมกับ

2) ในการแก้ไขโครงสร้าง IDE ให้ลองทำดังต่อไปนี้ :

โครงสร้างโครงการ -> {Select Module} -> Kotlin -> FIX

ตามคำแนะนำของสมาชิก JetBrain ที่นี่: https://discuss.kotlinlang.org/t/intellij-kotlin-project-screw-up/597


14
ฉันใช้ Android Studio ฉันไม่มีตัวเลือก "Kotlin" ในโครงสร้างโครงการ> โมดูล ความคิดใด ๆ ?
AutonomousApps

4
ไม่เห็นตัวเลือก kotlin นี้หลังจากเลือกโมดูล ... โดยใช้องค์กร intellij และเห็นได้ชัดว่า kotlin ได้รับการกำหนดค่าแล้วเมื่อฉันคลิกเครื่องมือ -> kotlin -> กำหนดค่า
heug

23

ในกรณีของฉันมันเป็นอินสแตนซ์ IntelliJ ที่กำหนดค่าไม่ถูกต้อง

โครงสร้างโครงการ -> SDK -> ลบและเพิ่ม Java SDK อีกครั้ง


นี่เป็นปัญหาของฉันหลังจากลบ OpenJDK และติดตั้ง Oracle JDK ขอบคุณ.
Patrik Stas

สิ่งนี้ได้แก้ไขปัญหาของฉันใน IntelliJ 2019.3 และ OpenJDK 11 ฉันต้องลบและเพิ่ม SDK อีกครั้ง
z11i

10

พบปัญหานี้ ฉันต้องเพิ่มสิ่งต่อไปนี้ใน build.grade ของฉัน:

apply plugin: 'kotlin-android'


8

ตกลงฉันเคยมาที่นี่สองสามครั้งแล้วและไม่แน่ใจว่ามันเกิดขึ้นได้อย่างไรหรือทำไม แต่การอ่านชี้ให้เห็นว่า Kotlin / JVM ไม่ตรงกัน ฉันได้ลองหลายสิ่งที่กล่าวถึงในหน้านี้ แต่ไม่ประสบความสำเร็จอย่างสมบูรณ์ นี่เป็นอาการที่ IDE แสดงในแผงข้อความหลังจากพยายามเรียกใช้การทดสอบผ่าน IDE อย่างไรก็ตามแผงรหัสไม่มีเส้นสีแดงที่บ่งชี้ว่าไม่พบโมดูลหรือนำเข้าหรือสิ่งที่ไม่เป็นประโยชน์

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

โครงการของฉัน (ในขณะที่เขียนสิ่งนี้) คือโครงการ gradle 4.10.2 kotlin 1.3 ใน IntelliJ (IntelliJ IDEA 2018.2.5 (Ultimate Edition) Build # IU-182.4892.20 สร้างเมื่อวันที่ 16 ตุลาคม 2018)

สำหรับผู้เริ่มต้นฉันยกเลิกการใช้แคชและเริ่มต้นใหม่ จากนั้นวิ่งงานสร้างที่สะอาด หลังจากสร้างโครงการใหม่ยังไม่มีความสุข ฉันเข้าไปในการตั้งค่าโปรเจ็กต์และสังเกตว่าเวอร์ชันคอมไพเลอร์ไม่ได้ตั้งค่าเป็น java 8 ฉันตั้งค่าเวอร์ชันคอมไพเลอร์ / Kotlin / Target JVM และคอมไพเลอร์ / Java / Project Byte Code เป็น 1.8 / 8 (ดูด้านล่าง) จากนั้นทำการทดสอบบางอย่างใน IDE และเรากลับมาทำธุรกิจ! การอ้างอิงได้รับการแก้ไขในกรณีของฉัน

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

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


ฉันมีปัญหาคล้ายกัน แต่ก็ต้องเปลี่ยนโมดูลโมดูลของฉันเป็นเวอร์ชัน JVM เป้าหมายที่ถูกต้อง
Jake Walsh

4

สำหรับฉันมันเกิดจากโปรเจ็กต์ไม่มี Gradle Libraries ในโครงสร้างโปรเจ็กต์

เพียงเพิ่ม build.gradle: apply plugin: 'idea'

แล้วเรียกใช้: $ gradle idea

หลังจากนั้น gradle จะสร้างไลบรารีการอ้างอิงขึ้นใหม่และการอ้างอิงจะได้รับการยอมรับ!


สิ่งนี้ได้รับการช่วยเหลือและใช้งานได้เนื่องจากไม่มีไลบรารี gradle
Kaushik Burkule

3

วิธีแก้ปัญหาที่เป็นไปได้สำหรับโปรเจ็กต์ Kotlin แบบสแตนด์อโลนคือการรวม libs มาตรฐานของ Kotlin ไว้ในโปรเจ็กต์รูท

การทำเช่นนั้นใน IntelliJ IDEA:

  • กด Ctrl + Shift + A (ค้นหาการกระทำหรือตัวเลือก)
  • พิมพ์ "Configure kotlin in project" และปล่อยให้รวม libs มาตรฐานไว้ให้คุณ

3

ปัญหาของฉันได้รับการแก้ไขโดยการเพิ่มkotlinดังต่อไปนี้

presentation.gradle (app.gradle)

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android' // here

apply plugin: 'kotlin-android-extensions' // and here

android {
    ...
}

dependencies {
    ...
}

domain.gradle ( kotlinบริสุทธิ์)

ข้อผิดพลาดของฉันถูกส่งมาที่นี่เนื่องจาก Android Studio สร้างโมดูลโดเมนของฉันเป็นโมดูล Java บริสุทธิ์และใช้ปลั๊กอินเป็น java และฉันใช้มันในโมดูลการนำเสนอของฉันที่เป็นโมดูล Android / Kotlin

Android Studio จะค้นหาและนำเข้าเส้นทางของแพ็กเกจ แต่ความเข้ากันไม่ได้ไม่อนุญาตให้สร้าง

เพียงแค่ถอดapply plugin: 'java'และเปลี่ยนไปที่ kotlin ดังต่อไปนี้

apply plugin: 'kotlin' // here is

dependencies {
    ...
}

...

data.gradle

apply plugin: 'com.android.library'

apply plugin: 'kotlin-android' // here

apply plugin: 'kotlin-android-extensions' // and here 

android {
    ...
}

dependencies {
    ..
}

ฉันคิดว่ามันจะเป็นประโยชน์


1

เหมือนกันกับ IDEA 14.1.5, Kotlin v.1.0.0-beta-1038-IJ141-17
Kotlin ได้รับรายการของตัวเอง (เช่น Java) เมื่อสร้างโครงการใหม่ แต่ config ที่ใช้งานได้เพียงอย่างเดียวคือ:

ใหม่ | โครงการ | Java | "Kotlin (Java)" (ตรวจสอบให้แน่ใจว่าคุณได้กำหนดค่า Project SDK ด้วย)
ใช้ไลบรารี: สร้าง "คัดลอกไปที่: lib"


1

ฉันลองทุกอย่างแล้ว: ล้างโฟลเดอร์ build, เรียกใช้gradle clean build, เรียกใช้ AS invalidate cache (x2), ติดตั้งปลั๊กอิน Kotlin ใหม่, รีสตาร์ทพีซี

แต่ในที่สุดหลังจากทำสิ่งนี้ทั้งหมดก็ยังไม่ได้ผล แต่การลบออกจากโปรเจ็กต์build.gradleของบรรทัดนี้: apply plugin: 'kotlin-android-extensions', gradle sync แล้วเพิ่มใหม่ก็ใช้ได้


1

ฉันได้รับข้อผิดพลาดนี้มากเกินไป แต่ฉันได้แก้ไขแล้วโดยใช้แนวคิดด้านล่าง

  1. รีสตาร์ทฉบับชุมชนไอเดีย intellij ของคุณ
  2. หลังจากนั้นไปที่มุมขวามือเพื่อตั้งค่าการกำหนดค่าสำหรับ java

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

  1. เลือกการตั้งค่าการกำหนดค่าสำหรับโมดูลทั้งหมด จากนั้นรันโค้ดอีกครั้ง มันจะทำงาน.

ข้อผิดพลาดนี้เกิดขึ้นเนื่องจากการกำหนดค่า java ไม่ถูกต้อง


2
ขออภัย แต่ข้อ 2 ไม่ชัดเจน ฉันไม่พบ "มุมขวามือ"
Deunz

1

บางครั้งสิ่งนี้อาจเกิดขึ้นเนื่องจากคุณพยายามใช้โปรเจ็กต์ที่มีปลั๊กอิน Kotlin เวอร์ชันที่เข้ากันไม่ได้ใน Gradle กับปลั๊กอินใน IDE ของคุณ ตรวจสอบเวอร์ชันของ org.jetbrains.kotlin.jvm และปลั๊กอิน Kotlin อื่น ๆ ใน build.gradle และเวอร์ชันของปลั๊กอิน kotlin ที่ติดตั้งใน IDE ของคุณและพยายามทำให้ใกล้เคียงกัน:

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

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


0

เกิดขึ้นกับฉันในวันนี้

ปัญหาของฉันคือฉันเปิดแท็บมากเกินไป (ฉันไม่รู้ว่าเปิดอยู่) โดยมีซอร์สโค้ดอยู่

หากคุณปิดแท็บทั้งหมดบางทีคุณอาจจะยกเลิกการเชื่อมโยง IntelliJ ในการสร้างดัชนีการอ้างอิงอย่างถูกต้อง


อันที่จริงสิ่งนี้สมเหตุสมผลแล้วสาเหตุที่คุณได้รับคะแนนที่แข็งแกร่งเป็นเพราะคุณอธิบายได้ไม่ดี ถ้า some1 มีสองโปรเจ็กต์เปิดอยู่ใน IDE ให้พูดหนึ่งกับ Gradle และอีกหนึ่งโปรเจ็กต์กับ Maven การเรียกใช้โครงการใดโครงการหนึ่งอาจนำไปสู่การอ้างอิงที่ไม่ได้รับการแก้ไข
HA S

0

การทำให้แคชไม่ถูกต้องและการอัปเดตปลั๊กอิน Kotlin ใน Android Studio เป็นเคล็ดลับสำหรับฉัน


0

ฉันมีปัญหานี้เนื่องจากฉันพยายามตั้งค่าการกำหนดค่าไลบรารีหลายแพลตฟอร์ม

ฉันได้ลบชุดซอร์สทั้งหมดที่มีการอ้างอิงจากไฟล์ "build.gradle" แต่เก็บชุดซอร์ส "ทั่วไป" ไว้

Native ทำงานได้ดี แต่ JVM ไม่สามารถสร้างและแสดงข้อผิดพลาดของคุณได้

ในท้ายที่สุดวิธีแก้ปัญหาคือการไม่ลบชุด Source ของ JVM ไม่ว่าจะเป็นการอ้างอิง


0

สิ่งที่ฉันอยากจะเพิ่มอีกอย่างคือคุณต้องเลือกView -> Tool Windows -> Gradleก่อนจึงจะสามารถรันโปรเจ็กต์โดยใช้ Gradle

หากใช้ Gradle โปรเจ็กต์จะสร้างและรันตามปกติ แต่ใช้ IntelliJ ไม่ได้สิ่งนี้จะสามารถแก้ปัญหาได้


0

ฉันมีปัญหานี้เนื่องจาก linter กำลังพิมพ์ว่าวัตถุของฉันเป็นตัวอย่างFooในขณะที่คอมไพเลอร์ไม่สามารถกำหนดประเภทของมันและพิจารณาว่าเป็นAnyวัตถุเช่น (มันซับซ้อนกว่าในกรณีของฉันข้อผิดพลาดแสดง linter ในโค้ดด้านล่าง แต่ ความคิดอยู่ที่นี่):

    class Foo {
        val bar: Int = 0
    }

    fun test(): Any {
        return Foo()
    }

    val foo = test()
    foo.bar // <-- Linter consider that foo is an Instance of Foo but not the compiler because it's an Any object so it show the error at compilation.

ในการแก้ไขฉันต้องโยนวัตถุของฉัน:

val foo = test() as Foo


-1

บางครั้งในสถานการณ์ที่คล้ายคลึงกัน (ฉันไม่คิดว่ามันเป็นปัญหาของคุณเพราะกรณีของคุณง่ายมาก) ควรตรวจสอบแพ็คเกจไฟล์ kotlin

หากคุณมีไฟล์ Kotlin ภายในแพ็คเกจเดียวกันและใส่คลาสบางคลาสและพลาดการประกาศแพ็กเกจมันจะดูภายใน IntelliJ ว่าคุณมีคลาสในแพ็คเกจเดียวกัน แต่ไม่มีคำจำกัดความของแพ็คเกจ IntelliJ จะแสดงให้คุณเห็น:

ข้อผิดพลาด: (5, 5) Kotlin: การอ้างอิงที่ไม่ได้รับการแก้ไข: ...


-1

ทางออกที่ง่ายที่สุด:

เครื่องมือ -> Kotlin-> กำหนดค่า Kotin ในโครงการ

โหวตเพิ่มหากพบว่ามีประโยชน์


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