解决异常 java.lang.ClassCastException:org.jetbrains.kotlin.psi.KtFile

Resolve exception java.lang.ClassCastException: org.jetbrains.kotlin.psi.KtFile

我正在为 Intellij Idea 编写一个插件,其主要思想是获取 Kotlin class 的结构,如:属性、方法等。 在我的 plugin.xml 中,我添加了以下行 <depends>org.jetbrains.kotlin</depends>

作为访问 class KtVisitor 的库,我向 gradle 添加了以下库: org.jetbrains.kotlin:kotlin-compiler:1.2.30

一切都在编译时出现异常,当我运行代码并听取动作时,我收到以下错误: java.lang.ClassCastException: org.jetbrains.kotlin.psi.KtFile cannot be cast to com.intellij.psi.PsiFile

我的 class 负责监听动作如下:

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

感谢任何解决此问题的帮助。谢谢。

ClassCastException 的发生是因为 IDEA 加载了 Kotlin 插件的两个副本 类,一个来自实际的 Kotlin 插件,另一个来自您提供的 kotlin-compiler.jar。添加插件依赖项的正确方法是将以下内容添加到您的 build.gradle:

intellij {
    plugins 'org.jetbrains.kotlin'
}