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 № 1Il 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"
}