【发布时间】:2020-04-03 22:23:38
【问题描述】:
我正在学习为 IntelliJ 创建一个插件,但我被 PsiElement 卡住了。我无法将 PsiElement 转换为 KtClass,即使它也是 KtClass。
这是错误日志
java.lang.ClassCastException: org.jetbrains.kotlin.psi.KtClass cannot be cast to org.jetbrains.kotlin.psi.KtClass
at action.MyAction.getPsiClassFromEvent(MyAction.kt:32)
at action.MyAction.actionPerformed(MyAction.kt:21)
at com.intellij.openapi.actionSystem.ex.ActionUtil$1.run(ActionUtil.java:261)
at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:278)
at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAwareWithCallbacks(ActionUtil.java:252)
at com.intellij.ui.popup.ActionPopupStep.performAction(ActionPopupStep.java:200)
at com.intellij.ui.popup.ActionPopupStep.performAction(ActionPopupStep.java:190)
at com.intellij.ui.popup.ActionPopupStep.lambda$onChosen$2(ActionPopupStep.java:184)
...
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
这是我的功能
private fun getPsiClassFromEvent(e: AnActionEvent): KtClass? {
val psiElement = e.getData(
LangDataKeys.PSI_ELEMENT
) ?: return null
return psiElement as KtClass
}
这是我的毕业论文:
plugins {
id 'org.jetbrains.intellij' version '0.4.15'
id 'org.jetbrains.kotlin.jvm' version '1.3.61'
}
group 'intellijtemplate.djaka.id'
version '1.0-SNAPSHOT'
apply plugin: 'org.jetbrains.intellij'
apply plugin: 'kotlin'
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
implementation "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.61"
}
intellij {
version '2019.1.4'
plugins 'org.jetbrains.kotlin:1.3.11-release-IJ2018.3-1'
}
【问题讨论】:
-
看起来有来自两个不同类加载器的 2 个
KtClass类。第一个来自 intellij 插件,第二个来自dependencies。您能否尝试将implementation更改为compileOnly为kotlin-stdlib-jdk8? -
@Feedforward 我将依赖项更改为如下所示。
dependencies { compileOnly "org.jetbrains.kotlin:kotlin-stdlib-jdk8" implementation "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.61" }但我仍然遇到同样的错误
标签: intellij-idea kotlin jetbrains-ide intellij-plugin