我正在为Intellij Idea编写一个插件,其主要思想是将Kotlin类的结构作为:属性,方法等。
在我的 plugin.xml 中,我添加了以下行<depends>org.jetbrains.kotlin</depends>
作为访问类KtVisitor
的库,我添加了以下库:
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 ConvertAction: AnAction(), DumbAware {
override fun actionPerformed(event: AnActionEvent?) {
val psiFile = event?.getData(PlatformDataKeys.PSI_FILE)
val s = true
}}
感谢任何帮助如何解决此问题。谢谢。
答案 0 :(得分:1)
发生ClassCastException
因为IDEA加载了两个Kotlin插件类副本,一个来自实际的Kotlin插件,另一个来自你提供的kotlin-compiler.jar
。添加插件依赖项的正确方法是将以下内容添加到build.gradle
:
intellij {
plugins 'org.jetbrains.kotlin'
}