/ / Risolvi l'eccezione java.lang.ClassCastException: org.jetbrains.kotlin.psi.KtFile - gradle, intellij-idea, kotlin, intellij-plugin

Risolvi l'eccezione java.lang.ClassCastException: org.jetbrains.kotlin.psi.KtFile - gradle, intellij-idea, kotlin, intellij-plugin

Sto scrivendo un plugin per Intellij Idea, dove l'idea principale è quella di ottenere la struttura di una classe Kotlin come: proprietà, metodi, ecc. Nel mio plugin.xml Ho aggiunto la seguente riga <depends>org.jetbrains.kotlin</depends>

E come una biblioteca per accedere alla classe KtVisitor Ho aggiunto a gradle la seguente libreria: org.jetbrains.kotlin:kotlin-compiler:1.2.30

Tutto si sta compilando con eccezioni, che quando eseguo il codice e ascolto l'azione, sto ricevendo il seguente errore: java.lang.ClassCastException: org.jetbrains.kotlin.psi.KtFile cannot be cast to com.intellij.psi.PsiFile

La mia classe responsabile dell'ascolto dell'azione sta seguendo:

class ConvertAction: AnAction(), DumbAware {
override fun actionPerformed(event: AnActionEvent?) {
val psiFile = event?.getData(PlatformDataKeys.PSI_FILE)
val s = true
}}

Apprezzare qualsiasi aiuto su come risolvere questo problema. Grazie.

risposte:

1 per risposta № 1

Il ClassCastException succede perché IDEA carica due copie delle classi di plugin Kotlin, una dall'attuale plugin Kotlin e un'altra dal kotlin-compiler.jar che stai fornendo.Il modo corretto per aggiungere la dipendenza del plugin è aggiungere il seguente al tuo build.gradle:

intellij {
plugins "org.jetbrains.kotlin"
}