解决异常 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'
}
我正在为 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'
}