我正在为Intellij Idea编写一个插件,主要思想是获取Kotlin类的结构为:属性,方法等。
在我的 plugin.xml 中,添加了以下行<depends>org.jetbrains.kotlin</depends>
作为访问类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
负责听 Action 的地雷类如下:
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'
}
关于gradle - 解决异常java.lang.ClassCastException:org.jetbrains.kotlin.psi.KtFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49429166/