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

标签 gradle intellij-idea kotlin intellij-plugin

我正在为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/

相关文章:

Gradle processResources 损坏 .jks

gradle - 如何在junit 5 gradle测试报告中捕获stdout/stderr?

java - 反编译的.class文件,字节码版本: 51. 0 (java 7)

android - 无法使用 IntelliJ IDEA 在 Android L 上访问 SQLite

kotlin - 如何在 Kotlin @Deprecated 注释中指定泛型类型参数?

android - 如何根据对象的属性重新排列 Kotlin 中 ArrayList 的顺序?

kotlin - 发行人赎回另一方持有的可替代代币

kotlin - kotlin 序列化插件更新到 1.7.10 后 Gradle 失败

eclipse - 如何通过Eclipse为Spring Boot Gradle Project创建项目jar文件?

java - 如何加载 gradle 项目,然后将其用作 IntelliJ 中现有项目之一的依赖项