唐瀚林 2024-05-08 14:34 采纳率: 0%
浏览 129

IDEA插件开发无法找到PsiClass

idea开发插件打包完成后运行提示找不到java.lang.NoClassDefFoundError: com/intellij/psi/PsiClass这个类,但是在编译时没有出现这个问题,在plugin.xml中导入了

<depends>com.intellij.modules.platform</depends>
    <depends>com.intellij.modules.lang</depends>

build.gradle.kts文件中使用了依赖,这个是类加载器的问题吗。

    implementation("org.springframework:spring-webmvc:2.5.1")
    implementation("org.jetbrains.kotlin:kotlin-compiler:1.0.6")

img

  • 写回答

4条回答 默认 最新

  • 笑面虎 2024-05-08 14:35
    关注

    以下内容由CHATGPT及笑面虎共同生成、有用望采纳:


    【问题概括】:你遇到的问题是在 IntelliJ IDEA 插件开发中,运行时出现了 java.lang.NoClassDefFoundError: com/intellij/psi/PsiClass 错误,这个错误表明 JVM 在运行时找不到 PsiClass 类。尽管你在 plugin.xml 中已经添加了对相关模块的依赖,并且编译时没有问题。

    【图片内容】:上传的图片包含了 IntelliJ IDEA 插件的 Kotlin 代码片段,该代码定义了一个名为 ScanControlerAction 的动作,该动作用于扫描控制器类的方法,并显示结果。图片中的代码展示了如何检查项目和虚拟文件是否存在,以及如何捕获 PsiClass 对象和扫描类方法。

    【问题出现原因】:问题可能出现的原因有几个:

    1. 运行时类路径配置不正确,导致 PsiClass 类在运行时不可见。
    2. 尽管在 plugin.xml 中添加了依赖,但可能存在版本兼容性问题或者依赖没有被正确包含在最终的插件 JAR 中。
    3. build.gradle.kts 文件中的依赖可能没有被正确处理,或者与 IntelliJ IDEA 插件的运行时环境不兼容。

    【问题解决方案】:

    1. 确保 plugin.xml 中的依赖是正确的,并且与 IntelliJ IDEA 版本兼容。
    2. 检查 build.gradle.kts 文件,确保所有依赖都是必要的,并且与 IntelliJ IDEA 插件的运行时环境兼容。
    3. 尝试清理和重新构建项目,以确保所有的依赖都被正确打包。
    4. 如果问题依旧存在,尝试运行 IntelliJ IDEA 的诊断模式,查看是否有更详细的错误信息。

    【提供代码】:由于问题与代码的具体实现关系不大,更多的是关于类加载和依赖管理,因此不需要修改图片中的代码。但是,确保你的 build.gradle.kts 文件中的依赖是正确的,并且与 IntelliJ IDEA 版本兼容。

    【代码运行方式】:运行 IntelliJ IDEA 插件的常规方式是使用 IntelliJ IDEA 的插件开发环境,通过该环境提供的运行配置来启动插件。

    【代码预期运行结果】:如果问题得到解决,插件应该能够正常运行,不会抛出 NoClassDefFoundError 错误,并且能够正确地扫描 PsiClass 对象和显示结果。

    【推荐相关链接】:

    • IntelliJ IDEA 插件开发文档:https://plugins.jetbrains.com/docs/intellij/
    • IntelliJ IDEA 社区版源码:https://github.com/JetBrains/intellij-community
    • IntelliJ IDEA 插件开发教程:https://www.jetbrains.org/intellij/sdk/docs/basics.html

    请注意,解决这类问题通常需要对 IntelliJ IDEA 插件开发和 Java 类加载机制有一定的了解。如果你不熟悉这些概念,可能需要进一步学习相关的文档和资料。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月8日